我查看了python的官方文档,但我似乎无法找到参考周期.任何人都可以澄清它对我来说是什么,因为我正在尝试理解GC模块.提前感谢您的回复.
python garbage-collection reference-counting cyclic-reference
正如我们(或至少我)在这个答案中所学到的那样,只有包含不可变值的简单元组才会被python的垃圾收集器跟踪,一旦它发现它们永远不会参与引用循环:
>>> import gc
>>> x = (1, 2)
>>> gc.is_tracked(x)
True
>>> gc.collect()
0
>>> gc.is_tracked(x)
False
Run Code Online (Sandbox Code Playgroud)
为什么这不是namedtuple的情况,它是来自具有命名字段的collections模块的元组的子类?
>>> import gc
>>> from collections import namedtuple
>>> foo = namedtuple('foo', ['x', 'y'])
>>> x = foo(1, 2)
>>> gc.is_tracked(x)
True
>>> gc.collect()
0
>>> gc.is_tracked(x)
True
Run Code Online (Sandbox Code Playgroud)
他们的实现中是否存在一些可以防止这种情况或者只是被忽视的东西?