从入门到富豪 发表于 2020-7-30 14:30:11

关于闭包的问题

当我设计了一个闭包,存储了一个变量,比如 a=10,在内函数被调用且读取了a=10后。

def ceshi():
    a=10
    def inner():
      print(b:=a+1)
    return inner

ceshi()()

内函数计算结束并返回结果给调用方后, a=10 会被释放掉吗?

是每次调用的时候重新赋值局部变量A=10,还是只要第一次调用了,这个变量就一直存储起来了,如果是存储起来了, 如何设计
让inner返回结果的时候就释放掉a=10这个变量呢?

永恒的蓝色梦想 发表于 2020-7-30 14:35:25

存储起来了。
如何设计让inner返回结果的时候就释放掉a=10这个变量呢?啥意思?

Twilight6 发表于 2020-7-30 14:39:47



你看看这个例子,就拿甲鱼哥的:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=172822&pid=4777716


从入门到富豪 发表于 2020-7-30 15:05:50

给大家解答一下, 那就是除非人工del掉闭包的局部变量,否则一直存储在内存中, 所以闭包内外没有关联的话,一定要记得del掉,否则持久化程序,这个就是内存溢出的隐患点, 如果是用做装饰器,就更加需要del删除掉了,否则一直存在。
页: [1]
查看完整版本: 关于闭包的问题