我试图弄清楚python对象何时是垃圾收集的候选对象。我已经阅读了一些文件/帖子,但无法找到明确的答案。
以下面一行为例。这是对 foo 的最后一次引用。foo 指向的对象何时可用于垃圾回收?
ret = func(['xyz: ' + foo.name])
将其分解为(可能的)单个步骤:
- 创建对名称的临时引用。
- 'xyz:' 与名称连接并返回值。
- 列表是使用新字符串创建的。
- 使用新数组调用函数。
- 函数返回。
- 结果分配给ret。
- 下一个指令...
在哪两个步骤之间,对象首先有资格被收集?对象的引用计数何时减少?
如果步骤列表不完整/不正确,也请告诉我。我只是试图列举它们,为可能的参考答案提供一个共同的起点。