Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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中每个新对象的引用数都增加2?_Python_Cpython_Python Internals - Fatal编程技术网

为什么Python中每个新对象的引用数都增加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 回溯(最近一次呼叫最后一次): 文件

在定义新对象后,交互环境中的引用数增加了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
回溯(最近一次呼叫最后一次):
文件“”,第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
包。