闭包是一种现象,是弱数据类型语言所有特有的一种现象,个人理解为在函数内部调用其他函数变量的现象叫闭包(函数里面的变量是局部变量,作用域只有在函数本身),闭包就是函数包裹着函数的现象
例子说明:
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)后,就会d栈,函数的局部变量就会被垃圾回收机制回收,但inner()函数里面要使用变量a,如果按照征程流程进行回收a,就会报错,但并没有报错,也就是说明变量a并没有被回收。
结论:闭包让外围的函数常驻内存,导致垃圾不能及时释放,但是让局部变量变成了全局变量。所以说尽量不要使用闭包。在js中闭包使用比较广泛,而在python中使用较少,一般用在装饰器中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)