闭包函数
概念
在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。——
维基百科
非闭包
def read_a():
a = '变量'
print(a)
read_a()
正常函数调用过程
a变量随着函数结束,就被内存回收了。
闭包实例
def read_b():
b = '变量'
print('外部'+b)
def inner():
print('内部' + b)
return inner
f = read_b()
f()
而闭包函数,内部函数引用了外部变量
所以read_b(),在执行完之后,b变量还是被持久化在内存。
闭包在装饰器中使用较多
def login(func):
def check(*args, **kwargs):
print('校验登录')
ret = func(*args, **kwargs)
return ret
return check