sys.getrefcount() returns 值远高于 2

sys.getrefcount() returns value much higher than 2

我知道调用 getrefcount() 会将引用按值复制到函数的参数中,暂时增加对象的引用计数。这是第二个参考的来源。

但是,当我 运行 以下代码时,我得到的引用计数值为 33

import sys
a1 = 5
print(sys.getrefcount(a1))

我期待 2 的输出,但它正在打印 33

5 是 CPython 缓存的小整数之一。因此,每个恰好为 5 的值都指向同一个实例。例如,将其更改为 a1 = 5000,您将看到它按预期打印 2