13闭包
-
闭包作用
-
封闭的数据,只允许指定内容使用
-
保证了数据的安全性
-
-
闭包的定义
-
内层函数,对外层函数非全局变量的引 用(使用),就会形成闭包
-
闭包只能存在于嵌套函数中,且内部函数引用了外部函数的变量
-
被引用的非全局变量也叫作“自由变量”,这个自由变量会与内部函数产生一个绑定关系。
-
自由变量不会随着函数结束而消失,会一直存在于内存中
-
内部函数使用外部函数的变量,外部变量把内部变量通过return返回给调用者,这个过程叫做闭包,被返回的函数叫做闭包函数
-
-
闭包的作用
- 保证了数据安全
-
例子
def make_averager(): li=[] def averager(new_value): li.append(new_value) total=sum(li) return total/len(li) return averager avg=make_averager() print(avg(10000)) print(avg(11000)) print(avg(12000)) print(avg(9000)) #结果如下: 10000.0 10500.0 11000.0 10500.0- 每次调用,li的值不会被清空
-
如何判断
-
使用代码判断是否是闭包
def make_averager(): li=[] def averager(new_value): li.append(new_value) total=sum(li) return total/len(li) return averager avg=make_averager() print(avg.__code__.co_freevars) # 结果如下,如果有自由变量,就会把它返回,又返回就是闭包: ('li',)
-
本文来自博客园,作者:majic_jie,转载请注明原文链接:https://www.cnblogs.com/majic-jie/articles/17546709.html

浙公网安备 33010602011771号