1 什么是闭包?
在 python 中创建一个闭包一般有 3 个要求:
1.闭包函数必须有内嵌函数。(函数的嵌套定义)
2.内嵌函数必须要引用外层函数的变量。
3.闭包函数返回内嵌函数的地址(函数名称)
一个简单的闭包函数:
def funcOut(a=10): name = 'James' def funcIn(): print(a,name) pass return funcIn
2)如何判断一个嵌套函数,是否为闭包函数?
内部函数名.closure
如果打印的为None,则不是闭包函数
def funcOut(a=10): name = 'James' def funcIn(): print(a,name) pass print(funcIn.__closure__) #验证是否为闭包函数,只要打印的不是return funcIn None就是闭包函数
3)闭包的生命周期
class A: def __init__(self): print('生成{}'.format(self)) def __del__(self): print('死亡{}'.format(self)) def funcOut(a=10): a1 = A() def funcIn(): print(a,a1) return funcIn f = funcOut() f() while True: pass
结果:
生成<__main__.A object at 0x0000000002139AC8> 10 <__main__.A object at 0x0000000002139AC8>
**结论:**在程序结束后生命周期才结束
文章来源: https://blog.csdn.net/weixin_44901453/article/details/90522484