闭包:
封闭的东西:保证数据的安全(最主要的作用)
1.闭包只能存在嵌套函数中
2.内层函数对外层函数非全局变量的引用(使用),就会形成闭包。被引用的非全局变量也称为自由变量,这个自由变量会与内层函数产生一个绑定关系,不会在内存中消失
判断一个嵌套函数是否为闭包:
def wrapper(): a = 1 def inner(): print(a) return inner ret = wrapper()
a = 1 def wrapper(): def inner(): print(a) # 没有对外层非全局变量的使用 return inner ret = wrapper()
def wrapper(a, b): def inner(): print(a) print(b) return inner a = 2 b = 3 ret = wrapper(a, b) print(ret.__code__.co_freevars) # 如何用代码判断闭包 ***