当前位置: 首页 > 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.dtcms.com/a/359255.html

相关文章:

  • 深入理解 shared_ptr 与 weak_ptr:访问控制与线程安全
  • 广东省省考备考(第九十天8.30)——判断推理(第十节课)
  • Java多线程初阶
  • C++讲解---如何设计一个类
  • 防火墙技术(三):状态检测和会话机制
  • 接口自动化测试框架
  • python pyqt5开发DoIP上位机【自动化测试的逻辑是怎么实现的?】
  • 深度解析Fluss LockUtils类的并发艺术
  • 手写MyBatis第43弹:插件拦截原理与四大可拦截对象详解
  • Agent实战教程:LangGraph结构化输出详解,让智能体返回格式化数据
  • Keil5 MDK_541官网最新版下载、安装
  • offsetof宏的实现
  • 线程池项目代码细节2
  • 互联网医院系统源码解析:如何从零搭建高效的在线问诊平台
  • SNMPv3开发--EngineID安全访问机制
  • 腾讯云的运维笔记——从yum的安装与更新源开始
  • 深入理解 Linux 驱动中的 file_operations:从 C 语言函数指针到类比 C++ 虚函数表
  • centos7中MySQL 5.7.32 到 5.7.44 升级指南:基于官方二进制包的原地替换式升级
  • 有个需求:切换车队身份实现Fragment的Tab隐藏显示(车队不显示奖赏)
  • SNMPv3开发--简单使用
  • 【Linux基础】深入理解Linux环境下的BIOS机制
  • Python - 机器学习:从 “教电脑认东西” 到 “让机器自己学规律”
  • 项目管理和产品管理的区别
  • docker,mysql安装
  • vector的学习和模拟
  • 揭秘表格推理的“思维革命”:RoT模型介绍
  • 【机器学习基础】机器学习中的容量、欠拟合与过拟合:理论基础与实践指南
  • Vue生命周期、工程化开发和脚手架、组件化开发
  • 学习日志41 python
  • 打工人日报#20250830