Python 仍然对引用计数感到困惑
出于好奇,我试图理解Python中引用计数是如何工作的。这两个条目:Python 仍然对引用计数感到困惑,python,reference,counting,Python,Reference,Counting,出于好奇,我试图理解Python中引用计数是如何工作的。这两个条目: 他们很有帮助,但仍然提出了问题 使用sys.getrefcount()返回的值不同于len(gc.get\u referers())。例如: >>> a = 3 >>> print sys.getrefcount(a) 38 >>> print len(gc.get_referrers(a)) 23 为什么不同 据我所知,a上的引用计数非常高,因为在我将名称a绑定
sys.getrefcount()
返回的值不同于len(gc.get\u referers())
。例如:
>>> a = 3
>>> print sys.getrefcount(a)
38
>>> print len(gc.get_referrers(a))
23
为什么不同a
上的引用计数非常高,因为在我将名称a
绑定到它时,已经有一个对象持有一个整数值3
。Python如何跟踪哪个对象持有3
,从而将名称a
绑定到该对象,并相应地增加其引用计数gc.get\u referers
只返回循环检测gc知道的对象。不可能参与引用循环的对象不需要被循环检测器跟踪,因此它们可能不会显示在get\u referers
列表中static PyIntObject *small_ints[NSMALLNEGINTS + NSMALLPOSINTS];