当前位置:网站首页>闭包及闭包的使用
闭包及闭包的使用
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()边栏推荐
- 贝叶斯优化核极限学习机KELM用于回归预测
- 不需要服务器,教你仅用30行代码搞定实时健康码识别
- LeetCode·84.柱状图中最大的矩形·单调递增栈
- Pulsar消费者处理不当导致的消息积压问题
- NFT blind box mining system dapp development NFT chain game construction
- Difference between GET and POST requests
- 奖金池高达 20 万,RTE 2022 创新编程挑战赛正式开启
- postman “header“:{“retCode“:“999999“
- Tomato assistant downloading tomatoes
- B站回应HR称核心用户是Loser;微博回应宕机原因;Go 1.19 正式发布|极客头条
猜你喜欢

荐书 | 《大脑的奥秘:人人要懂的脑科学》:大脑里面有什么

花了半个月,终于把一线大厂高频面试题做成合集了

“敏捷欺骗了开发人员”

录音文件识别

What are the useful IT asset management platforms?
![吴恩达机器学习[13]-支持向量机](/img/8c/87f1dd825bb998008d1532ff2899e2.png)
吴恩达机器学习[13]-支持向量机

Jenkins 如何玩转接口自动化测试?

leetcode:743. 网络延迟时间【单源最短路 + dijkstra模板】

B站回应HR称核心用户是Loser;微博回应宕机原因;Go 1.19 正式发布|极客头条

Projector reached the party benefits 】 【 beginners entry - brightness projection and curtain selection - from entry to the master
随机推荐
NFT blind box mining system dapp development NFT chain game construction
屏幕分辨率兼容性
平稳发展 | 西欧地区手游玩家的数据和洞察
SAP HANA Schemas 和 HDI Containers
软考 --- 软件工程(2)软件开发方法
转型阵痛期,好未来减亏容易增收难?
保证通信的机制有哪些
越来越火的图数据库到底能做什么?
Crawler Xiaobai Notes (yesterday's supplement to pay attention to parsing data)
什么是APS?APS+MES如何解决生产难题?
游戏云服务器配置怎么选合理?
【Pick-in】Advertising-information flow cross-domain CTR estimation (to be updated)
不需要服务器,教你仅用30行代码搞定实时健康码识别
微信小程序获取年月日周及早上、中午、晚上
线上一次JVM FullGC搞得整晚都没睡,彻底崩溃
视频字幕API接口文档
面了三十个人,说说真实感受
Roslyn 在多开发框架让 msbuild 的 Target 仅运行一次
A detailed explanation of what is software deployment
现代 ABAP 编程语言中的正则表达式