闭包函数:
内部函数引用外部函数而非全局作用域的变量,该内层函数称为闭包函数
闭包好处:若python检测到闭包,局部作用域不会随着函数的结束而关闭,会一直在内存中。
这才是闭包函数最常用的用法:爬虫,装饰器
def func():
name = 'eva'
def inner():
print(name)
return inner
f = func()
f()
判断闭包函数的方法__closure__
#输出的__closure__有cell元素 :是闭包函数
def func():
name = 'eva'
def inner():
print(name)
print(inner.__closure__)
return inner
f = func()
f()
#输出的__closure__为None :不是闭包函数
name = 'egon'
def func2():
def inner():
print(name)
print(inner.__closure__)
return inner
f2 = func2()
f2()
闭包的嵌套
def wrapper():
money = 1000
def func():
name = 'eva'
def inner():
print(name,money)
return inner
return func
f = wrapper()
i = f()
i()