06.python闭包
2024-10-20 07:45:03
python闭包
什么样的函数是 闭包函数 ?
满足以下条件:
闭:外层函数嵌套了一个内层函数。
包:内层函数调用外层函数命名空间内的名字。举例如下:
def out_func(): # 外层函数
data = 'soria'
def in_func(): # 内层函数
print(data) # 内层函数调用外层函数命名空间内的变量
return in_func
box = out_func()
box()
执行顺序是:
1.默认顺序从上往下执行
2.遇到"="优先执行右边的out_fun()
3.执行函数out_func(),在其命名空间内,定义data,定义函数in_func(),return返回in_func
4.box接受in_func这个函数对象
5.box()相当于in_func()
6.执行in_func(),但是发现in_func()的命名空间没有data
7.去外层函数out_func的命名空间取data
8.输出'soria'
闭包函数 使用形参 给内层函数 传参
def out_func(data): # 外层函数
def in_func(): # 内层函数
print(data)
return in_func
box = out_func('soria') # 形参data与'soria'临时绑定
box()
box = out_func('jason') # 形参data与'jason'临时绑定
box()
在传入'数据'这个值时,相当于将形参与"数据"这个值临时绑定。
相当于在out_func函数体内加入了一行代码:
data = 'soria'
当内层函数in_func找不到data这个值时,依然会去外层函数寻找data,
此时就找到了形参绑定的值:'soria'。
最新文章
- [原创]MySQL innodb_rollback_on_timeout参数对锁的影响
- WPF之MVVM(Step2)——自己实现DelegateCommand:ICommand
- linux笔记:shell编程-正则表达式
- HTML5新特性之WebRTC
- slice的用法与用量
- 小公司生存,一般活过第一年,就能撑3年(读书笔记:成败关键,关键是你是否拥有现金流客户)good
- Codeblock解决注释乱码问题及在ubuntu中程序运行时乱码问题。
- Asp.net Core 跨域配置
- Angular 4+ Http
- windows环境隐藏命令行窗口运行Flask项目
- Yahoo Programming Contest 2019.E.Odd Subrectangles(思路 线性基)
- laravel框架容器管理
- Python3练习题系列(05)——设计和调试规则
- WebStorm for Mac(Web 前端开发工具)破解版安装
- eclipse中无法新建Android工程 出现问题:Plug-in org.eclipse.ajdt.ui was unable to load
- Codeforces Round #544 (Div. 3) dp + 双指针
- 搭建LDAP服务器
- Xcode修改新建项目注释模板(作者和公司名等)
- UITabBar设置详解
- 设置Linux-Centos6.5字符集