Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仍然对引用计数感到困惑_Python_Reference_Counting - Fatal编程技术网

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绑定

出于好奇,我试图理解Python中引用计数是如何工作的。这两个条目:

他们很有帮助,但仍然提出了问题

  • 使用
    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];