通俗易懂解释python闭包,闭包python 菜鸟教程
1.先看闭包的特性。
关闭条件:1。内部函数在外部函数中定义。2.外部函数有一个返回值。3.返回值是:内部函数的名称。4.内部函数也指外部函数的变量值。因此,最基本的闭包结构如下:
#闭包def func1():#外部函数a=100 #外部函数的变量definer _ func1():#内部函数b=99 #内部函数变量print(a,b)#引用外部函数的变量returninner _ func1返回内部函数名s=func1() #s接收func 1返回的inner_func1。
00 99 2.添加对基本版本的引用,即带有参数的闭包。
#闭包def func2 (a,B)带参数:#两个参数a,B c=100 #外部函数参数def inner_func2():#内部函数d=3 #内部函数参数sum=a b c d #引用外部函数参数print(sum) return inner_func2 #返回内部函数名f=func2(1,6)#f接收func2返回的inner_func2f()。
10 3.在上面的两个例子中,内部函数只引用外部函数的变量,而不修改外部函数的变量。如果你需要修改外部函数的变量值,你需要知道非局部的,全局的语句。
非局部变量名#内部函数可以修改外部函数的不可变变量全局变量名#内部函数可以修改全局不可变变量#封闭内部函数的变量访问x=10 #全局变量def func3():#外部函数y=9 #外部函数变量def inner_func3():#内部函数非局部y #当内部函数修改外部函数的不可变变量时, 需要在内部函数中声明:非局部变量名y=y 1 #修改外部函数变量值全局x #当内部函数修改全局不可变变量时,需要在内部函数中声明:全局变量名x=x 1 #修改全局变量值z=8 print(x,y,Z) return inner_func3 #返回内部函数名q=func3()#q接收func3返回的inner_func3q()#相当于调用inner_func3。 运行结果是:
1 10 8闭包还有一大特点:闭包是理解装饰者的基础。装修工请看《python之装饰器》。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。