鱼C论坛

 找回密码
 立即注册
查看: 1205|回复: 3

[已解决]关于闭包的问题

[复制链接]
发表于 2020-7-30 14:30:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
当我设计了一个闭包,存储了一个变量,比如 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:39:47


你看看这个例子,就拿甲鱼哥的:https://fishc.com.cn/forum.php?m ... 822&pid=4777716


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-30 14:35:25 | 显示全部楼层
存储起来了。
如何设计让inner返回结果的时候就释放掉a=10这个变量呢?
啥意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-30 14:39:47 | 显示全部楼层    本楼为最佳答案   


你看看这个例子,就拿甲鱼哥的:https://fishc.com.cn/forum.php?m ... 822&pid=4777716


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-30 15:05:50 | 显示全部楼层
给大家解答一下, 那就是除非人工del掉闭包的局部变量,否则一直存储在内存中, 所以闭包内外没有关联的话,一定要记得del掉,否则持久化程序,这个就是内存溢出的隐患点, 如果是用做装饰器,就更加需要del  删除掉了,否则一直存在。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 17:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表