cha*_*ies 1 python memory garbage-collection scope python-3.x
例如,在代码中:
a = [1, 2, 3, 4] # huge list
y = sum(a)
print( do_stuff(y) )
Run Code Online (Sandbox Code Playgroud)
在程序结束之前列表的内存会a被释放吗?函数调用是否必须在不断占用内存的情况do_stuff下完成所有工作,即使s 永远不会再次使用?aa
如果a没有收集垃圾,是否可以a=None在使用完毕后手动设置解决方案?
想象一下do_stuff这样做:
def do_stuff(y):
return globals()[input()]
Run Code Online (Sandbox Code Playgroud)
用户输入a,以便列表最终被使用。Python 无法知道这种情况不会发生,它必须读取用户的想法。
考虑这样一个简单的例子:
def do_stuff(y):
return y
Run Code Online (Sandbox Code Playgroud)
现在很明显它a不再被使用,所以 Python可以解决这个问题,对吗?嗯...print不再是关键字/语句了。Python 必须弄清楚你没有print用确实使用a. 即使您不这样做,它也需要知道它自己的print不使用a.
您必须自己删除它。我会用del a. (除非你想 a仍然存在并具有价值None)。
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |