闭包是一种现象,是弱数据类型语言所有特有的一种现象,个人理解为在函数内部调用其他函数变量的现象叫闭包(函数里面的变量是局部变量,作用域只有在函数本身),闭包就是函数包裹着函数的现象
例子说明:
def outer():
"""
这一一个闭包函数
:return:
"""
print("这是一个闭包函数。")
a = 10
def inner():
print("这是里面")
b = 20
print(a + b)
return inner
res = outer()
print(res)
res()
这是一个闭包函数。.inner at 0x00000045140939D0> 这是里面 30
函数调用本质就ter是压栈的过程,res=outer()调用outer()函数的时候就是压栈,当执行玩print(res)后,就会弹栈,函数的局部变量就会被垃圾回收机制回收,但inner()函数里面要使用变量a,如果按照征程流程进行回收a,就会报错,但并没有报错,也就是说明变量a并没有被回收。
结论:闭包让外围的函数常驻内存,导致垃圾不能及时释放,但是让局部变量变成了全局变量。所以说尽量不要使用闭包。在js中闭包使用比较广泛,而在python中使用较少,一般用在装饰器中。



