据我所知,sys.getrefcount()返回一个对象的引用数,在下列情况下"应该"为1:
import sys,numpy
a = numpy.array([1.2,3.4])
print sys.getrefcount(a)
Run Code Online (Sandbox Code Playgroud)
然而,事实证明是2!所以,如果我:
del a
Run Code Online (Sandbox Code Playgroud)
"numpy.array([1.2,3.4])"对象是否仍然存在(没有垃圾收集)?
为什么
sys.getrefcount()
Run Code Online (Sandbox Code Playgroud)
对于每个大数字或简单字符串返回3?这是否意味着3个对象驻留在程序中的某个位置?另外,为什么不设置x =(非常大的数字)会增加该对象的引用计数?这3个引用计数是否来自于我的打电话给getrefcount?谢谢你澄清这一点.
例如:
>>> sys.getrefcount(4234234555)
3
>>> sys.getrefcount("testing")
3
>>> sys.getrefcount(11111111111111111)
3
>>> x=11111111111111111
>>> sys.getrefcount(11111111111111111)
3
Run Code Online (Sandbox Code Playgroud)