为什么Python中每个新对象的引用数都增加2?
在定义新对象后,交互环境中的引用数增加了2,这对我来说有点奇怪。我只创建了一个对象,不是吗为什么Python中每个新对象的引用数都增加2?,python,cpython,python-internals,Python,Cpython,Python Internals,在定义新对象后,交互环境中的引用数增加了2,这对我来说有点奇怪。我只创建了一个对象,不是吗 >>> v Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'v' is not defined [41830 refs] >>> v = "v" [41832 refs] >v 回溯(最近一次呼叫最后一次): 文件
>>> v
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'v' is not defined
[41830 refs]
>>> v = "v"
[41832 refs]
>v
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“v”
[41830参考文献]
>>>v=“v”
[参考文献41832]
您的作业是通过在globals()
字典中创建一个条目来完成的,该条目以v
作为键,以“v”
作为值。这是两个引用(一个用于键,一个用于值),尽管在这种情况下,它们可能都引用相同的字符串“v”
您如何打印引用?-1:至少在您解释为什么您认为引用数增加了2之前@斯科特格里菲斯:这不是很明显吗?41832-41830是2。@Scottgrifiths:这是一个好问题(Tim已经问过了),但与您上次评论中的问题不同。这是Python的调试版本。在构建Python时,使用--with pydebug
选项调用configure
,或者在Debian或Ubuntu上安装Python dbg
包。