【发布时间】:2017-10-06 21:19:00
【问题描述】:
这只是我脑海中突然出现的一件有趣的事情。想象一个场景,当你有
def returner():
return 6
然后你叫它:
six = returner()
现在 6 已返回给six。但是当你像下面这样调用函数时,6 会发生什么?
returner()
返回的值会被完全丢弃吗?还是分配给某个隐藏变量?
【问题讨论】:
-
它被丢弃了。
-
@Kasramvd 仅在 Python 交互式解释器会话中发生。
-
@juanpa.arrivillaga 我很好奇,“丢弃”是否意味着立即垃圾收集和内存释放?也许这是另一个问题......
-
好吧,不能保证 when 它会被垃圾收集,实际上它取决于 Python 实现(例如 CPython 使用引用计数,但 IronPython 使用其他东西,例如)。但几乎,是的,它会立即被垃圾收集,即使它不是立即的,你也无法访问它,因为不存在引用。