python - 在 Python 中,循环引用的引用计数是多少,为什么?

标签 python cyclic-reference

这里是一个Python循环引用的例子。

>>> a = [1]
>>> b = [2]
>>> a.append(b)
>>> b.append(a)

在此之后,

>>> sys.getrefcount(a) = 3
>>> sys.getrefcount(b) = 3

为什么 ab 的引用计数为 3??

对不起大家,我刚才弄错了。

真正的问题是不同的。

>>> GNU = ['is not Unix']
>>> GNU.insert(0, GNU)
>>> sys.getrefcount(GNU) = 4

为什么 'GNU' 的引用计数是 4 ?

提前致谢:)

最佳答案

每个都有 3 个引用:

  1. 在第一个元素的其他列表中。
  2. 作为 sys.getrefcount() 的参数。
  3. 当前范围,即绑定(bind)到 ab

关于python - 在 Python 中,循环引用的引用计数是多少,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17310316/

相关文章:

python - 如何将输入设置为 Python 类中的参数

java - 使用 MapStruct 转换时防止循环引用

go - 有没有办法用encoding/gob序列化循环数据结构?

python - `gc` 对待 Cython 的 `__dealloc__` 是否与 `__del__` 类似?

javascript - 如果 javascript Onclick() 有 Mechanize ,如何点击按钮

python - 用 Pandas 解析多个 .tsv - 高效的索引和解析?

c++ - 命名空间内类的循环依赖问题

javascript - 检测对象A中的循环引用是否与对象B中的循环引用在结构上相同

python - 文本字符串到唯一整数方法?

python - 错误 : 'charmap' codec can't decode byte 0x9d in position 3696: character maps to <undefined> (Windows Command Line, Bokeh 程序)