python篇 闭包

python篇 闭包,第1张

python篇 闭包 闭包

闭包是一种现象,是弱数据类型语言所有特有的一种现象,个人理解为在函数内部调用其他函数变量的现象叫闭包(函数里面的变量是局部变量,作用域只有在函数本身),闭包就是函数包裹着函数的现象

例子说明:

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中使用较少,一般用在装饰器中。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5657942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存