当前位置:网站首页>闭包及闭包的使用
闭包及闭包的使用
2022-08-04 16:04:00 【NeilNiu】
一、闭包的定义
在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包。
二、闭包的构成条件
通过闭包的定义,我们可以得知闭包的形成条件:
1、在函数嵌套的前提下
2、内部函数使用了外部函数的变量(还包括外部函数的参数)
3、外部函数返回了内部函数,这个使用了外部函数变量的内部函数称为闭包
三、闭包的例子
def func_out():
# 外部变量
num1 = 10
def func_inner(num2):
result = num1 + num2
print('结果是:', result)
return func_inner
func_new = func_out()
func_new(11)四、闭包的作用:
闭包可以保存外部函数内的变量,不会随着外部函数的调用完而销毁
注意点:
由于闭包引用了外部函数的变量,则外部函数的变量没有及时释放,消耗内存。只有当闭包使用完后,外部变量才会释放
五、闭包的使用:
def config_name(name):
def inner(msg):
print(name + ":" + msg)
return inner
# 执行tom相当于 执行的是inner
tom = config_name("tom")
jerry = config_name("jerry")
tom("你过来啊")
jerry("过来干什么")
六、闭包修改外部函数的变量
在闭包内修改外部函数的变量需要使用nonlocal关键字
def func_out():
num1 = 10
def func_inner():
nonlocal num1
num1 = 20
result = num1 + 10
print(result)
return func_inner
new_func = func_out()
new_func()边栏推荐
猜你喜欢
JVM调优-GC基本原理和调优关键分析

js判断一个对象是否在一个对象数组中

"Research Report on the Development of Global Unicorn Enterprises in the First Half of 2022" released - DEMO WORLD World Innovation Summit ended successfully

一文解答DevOps平台的制品库是什么

贝叶斯优化核极限学习机KELM用于回归预测

西安纵横资讯×JNPF:适配中国企业特色,全面集成费用管控体系

保证通信的机制有哪些

postman “header“:{“retCode“:“999999“

Redis的主从复制和集群

For循环控制
随机推荐
SAP HANA Schemas 和 HDI Containers
DMS 有接口获取每个实例下的数据库列表吗
面试官:多个线程执行完毕后,才执行另一个线程,该怎么做?
云存储硬核技术内幕——(8) 只缘身在此山中
74行代码实现浪漫的红心下落的动画效果
js判断一个对象是否在一个对象数组中
jasmine.any(Function) 的一个使用场景
ICDE‘22推荐系统论文之Research篇
如何防止重复下单?
广东湛江海关破获3起走私冻海产品案 查证案值约1亿元
#夏日挑战赛# HarmonyOS 实现一个滑块验证
不需要服务器,教你仅用30行代码搞定实时健康码识别
面了三十个人,说说真实感受
游戏云服务器配置怎么选合理?
在VMD上可视化hdf5格式的分子轨迹文件
dot net double 数组转 float 数组
【伸手党福利】投影仪初学者入门——投影亮度及幕布选择——从入门到精通
第三章 Scala运算符
字节API鉴权方法
全差分运放:THS4140