目录
闭包的含义
在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包
闭包可以用来在一个函数与一组"私有"变量之间创建关联关系.在给定函数被多次调用的过程中,这些私有变量能够保持其持久性.
这种叫做嵌套函数
def func1():
print('func1')
def func2():
print('func2')
func2()
func1()
此时对于当前文件,a
为全局变量,b
为局部变量
a=1
def func3():
print('func3')
b=2
func3()
print(b)
一个函数的返回值,也可以是一个函数的引用
def func1():
print('func1')
def func2():
print('func2')
return func2
f1 = func1()
print(f1)
print(type(f1))
f1()
输出结果如下
func1
<function func1.<locals>.func2 at 0x000002B933B84CC0>
<class 'function'>
func2
如果我们有一个函数,让它可以任意的计算一个值的任意次幂等
def wapper(exponent):
def exponent_of(base):
return base ** exponent
return exponent_of
#计算一个数字的平方
square = wapper(2)
#计算2,3,4的平方
print(square(2))
print(square(3))
print(square(4))
下面的执行结果就很像,通过wapper(2)
持久化地获取到一个工具,此工具可以将任意数字的平方返回,这种写法就叫做闭包的写法
执行结果
4
9
16
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!