python -- 闭包

匿名 (未验证) 提交于 2019-12-02 22:11:45

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!