python----特殊闭包
1、闭包的定义:
当子函数有调用父级函数变量(非全局变量)并返回子函数名时父级函数不会随着函数运行而结束释放,而是会保存状态等待子函数的调用。
我们常见的闭包类型:
def fun1(): x = 1 def fun2(): return x return fun2
g = fun1()
print(g())
这样的闭包大家肯定能一眼看出。
那么这样的呢:
#1
def fun1(): lis = [] name = 'alex' def fun2(): print(name) lis.append(fun2) return lis g = fun1() g[0]() #2 lis = [] def fun1(): name = 'alex' def fun2(): print(name) lis.append(fun2) g = fun1() lis[0]()
运行上面程序你会发现其实都是闭包,第一种fun2调用了父级函数的name变量,然后函数名通过放在列表中返回了。而第二中,函数名时通过一个可变的全局变量列表中返回,所以也是一个闭包函数.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步