闭包函数是在一个函数内部又定义了一个函数,外部函数的返回值是内部函数的引用。
def func_out(m): n = m def func_inner(): nonlocal n n += 1 print(n) return func_inner
执行外部函数func_out()后,返回的是内部函数func_inner的引用,内部函数的状态还存在。
inner = func_out(5)
inner()
inner()
inner()
结果:
6
7
8
闭包的用途:
1. 惰性求值(或延迟求值)。
2. 装饰器。