当前位置: 首页 > news >正文

10. 函数和匿名函数(二)

目录

1. 嵌套函数

1.1 作用域

1.2 函数是如何运行的?

2. 闭包

2.1 必备三要素

2.2 最小示例

2.3 典型应用:计数器工厂

2.4 函数内部局部变量是重建还是重用?

3. 无状态与有状态的闭包

 3.1 无状态闭包(纯函数)

3.2 有状态闭包(带记忆)

4. lambda表达式

4.1 lambda表达式好处

4.2 将lambda表达式作为排序键

5. 装饰器

5.1 不带参数的装饰器

 5.2 带参数的装饰器(再包一层)

5.3 模板

6. 类型提示及函数注解

7. 应该使用类型提示吗?


1. 嵌套函数

如果想在函数内复用一些逻辑,而又不想创建一个函数以避免代码更加混乱,这种情况下,我们可以在函数内部中嵌套函数。

def outer(x):def inner(y):   # 嵌套函数return x + yreturn inner(3)

在函数内部定义一个inner函数,在outer函数中可以直接调用这个内部函数。

1.1 作用域

关于作用域,嵌套函数可以访问其封闭作用域中的名称,如上述代码中直接用到了outer的参数x。但是如果想在嵌套函数内部重新绑定或改变其中的任何名称,则需要使用nonlocal关键字。

nonlocal内层函数可以修改外层(非全局)函数的局部变量,而不是创建同名的新变量。

这里简单回顾作用域规则:

http://www.xdnf.cn/news/1402381.html

相关文章:

  • 数值分析——误差的来源与分类、误差的基本概念(绝对误差、相对误差、有效数字)
  • 国标调查:引领汽车消费市场健康发展的理性指南
  • 奥普新汽车声学测试方案书
  • 基于单片机温控风扇ds18b20系统Proteus仿真(含全部资料)
  • 矿物类型分类实战:从数据预处理到多模型对比
  • 计算机体系结构之流水线与指令级并行
  • 离线大文件与断点续传:ABP + TUS + MinIO/S3
  • Android FrameWork - 开机启动 SystemServer 进程
  • Science:机器学习模型进行遗传变异外显率预测
  • 项目管理的关键成功因素
  • 全栈开源,高效赋能——启英泰伦新官网升级上线!
  • 链表(1)
  • 继电器的作用、选型和测量-超简单解读
  • Preprocessing Model in MPC 3 - 基于同态加密的协议 - Over Rings 环
  • Rust 泛型:抽象与性能的完美融合(零成本抽象的终极指南)
  • 20250830_Oracle 19c CDB+PDB(QMS)默认表空间、临时表空间、归档日志、闪回恢复区巡检手册
  • 【MLLM】从BLIP3o到BLIP3o-NEXT:统一生成与理解
  • Elasticsearch logsdb 索引模式和 TSDS 的业务影响
  • WSL使用指南
  • STM32 之BMP280的应用--基于RTOS的环境
  • 【MLLM】多模态理解Ovis2.5模型架构和训练流程
  • Codeforces Round 1033 (Div. 2) and CodeNite 2025 vp补题
  • 【自然语言处理与大模型】如何进行大模型多模态微调
  • 互联网大厂Java面试:从基础到微服务的深度解析
  • folium地图不显示加载不出来空白问题解决
  • 将 Logits 得分转换为概率,如何计算
  • 学习嵌入式第四十一天
  • nestjs连接oracle
  • WIFI模块-USB-UART-SDIO
  • Manus AI 与多语言手写识别技术全解析