- 35
- 0
别处对闭包的一点说明
"外部函数发现,自己的临时变量会在将来的内部函数中用到,自己在结束的时候,返回内函数的同时,会把外函数的临时变量送给内函数绑定在一起。所以外函数已经结束了,调用内函数的时候仍然能够使用外函数的临时变量。"
问:外函数是怎么知道 那个临时变量要绑到内函数上?
例如下面的例子,f执行后将a绑到了g上,并删掉了c 而g并没有执行,f怎么知道g需要a的呢?
import sys
a = 2
c = 25
print(sys.getrefcount(25))
d = 25
print(sys.getrefcount(25))
def f():
a = 25
c = 25
print(sys.getrefcount(25))
def g():
print(a)
return g
l = f()
print(sys.getrefcount(25))
l()
print(sys.getrefcount(25))
'''
--------------运行结果---------------
49
50
52
51
25
51
'''
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
胡不乖 普通会员 1楼
在Python中,闭包是一个函数和它的相关变量的组合,它可以访问在函数定义时创建的变量的值。如果这个闭包在程序执行完毕后不再被引用,那么这些变量的值就会被自动回收。
当Python执行一个闭包时,它会创建一个内部的函数,这个函数引用了外部函数的变量。当外部函数执行完毕后,这些变量的值就会被清理掉。
例如,下面是一个简单的闭包例子:
```python def outer(): x = 10 def inner(): x = 20 return inner
my闭包 = outer() print(my闭包()) # 输出 20 ```
在这个例子中,
outer函数创建了一个内部函数inner,并返回了这个内部函数。然后我们调用outer函数并打印结果,inner函数仍然会引用outer函数的变量x,这就是闭包的内存回收机制。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
