当前位置:网站首页>闭包及闭包的使用
闭包及闭包的使用
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()
边栏推荐
- A detailed explanation of what is software deployment
- 《2022 年上半年全球独角兽企业发展研究报告》发布——DEMO WORLD世界创新峰会圆满落幕
- 软考 --- 软件工程(2)软件开发方法
- Analysis of Http-Sumggling Cache Vulnerability
- What is the difference between member variable and local variable
- 云存储硬核技术内幕——小结(上)
- LeetCode·85.最大矩形·单调栈
- Typora收费?搭建VS Code MarkDown写作环境
- 面试官:多个线程执行完毕后,才执行另一个线程,该怎么做?
- 无心剑七绝《七夕牵手》
猜你喜欢
随机推荐
Request method ‘POST‘ not supported。 Failed to load resource: net::ERR_FAILED
GPS卫星同步时钟,NTP网络同步时钟,北斗时钟服务器(京准)
如何实时监控销售数据?销售看板来帮你!
面了三十个人,说说真实感受
Real-Time Rendering 4th相关资源整理(无需积分 传火)
B 站又上热搜了, HR 称「核心用户都是 Loser」
Summary of some pytorch knowledge points that have been updated for a long time
[TA-Frost Wolf_may-"Hundred Talents Project"] Art 2.7 Metallic and Speculer Process
Difference between GET and POST requests
初学爬虫笔记(收集数据)
06-总线
【Pick-in】Advertising-information flow cross-domain CTR estimation (to be updated)
【二叉树】根据描述创建二叉树
Mysql Explain
leetcode:743. 网络延迟时间【单源最短路 + dijkstra模板】
云存储硬核技术内幕——(13) 抓手,组合拳与闭环
UWP WPF 解决 xaml 设计显示异常
Xi'an Zongheng Information × JNPF: Adapt to the characteristics of Chinese enterprises, fully integrate the cost management and control system
奖金池高达 20 万,RTE 2022 创新编程挑战赛正式开启
LeetCode·每日一题·1403.非递增顺序的最小子序列·贪心