首页 > 解决方案 > 为什么即使定义了新变量,大数字也只显示两个引用?

问题描述

当我在 sys 模块中使用 getrefcount 方法并尝试计算某些大数的引用(在本例中为 1000000)时,它显示了两个引用。现在我知道这两个引用可以被 IDLE 或 python 本身使用(根据本书)但是当我引入一个变量 a = 1000000 它应该显示 3 个引用但仍然显示 2。知道为什么会发生这种情况吗?

>>> import sys
>>> sys.getrefcount(1000000)
2
>>> a = 1000000
>>> sys.getrefcount(1000000)
2

标签: python

解决方案


您似乎在假设每次1000000在代码中都引用同一个对象。事实并非如此。

您的代码中包含三个不同的、不相关的1000000对象:

In [1]: id(1000000)
Out[1]: 4328822600

In [2]: id(1000000)
Out[2]: 4328822504

如果您尝试使用一个小整数,那么那些会被实习(至少由我的解释器),因此引用计数确实会增加:

In [7]: sys.getrefcount(3)
Out[7]: 284

In [8]: a = 3

In [9]: sys.getrefcount(3)
Out[9]: 287

推荐阅读