据我了解,sys.getrefcount()返回对象的引用数,在以下情况下“应”为1:
import sys,numpy
a = numpy.array([1.2,3.4])
print sys.getrefcount(a)
但是,结果是2!所以,如果我:
del a
“numpy.array([1.2,3.4])”对象是否仍然存在(没有垃圾回收)?
最佳答案
调用getrefcount()
时,引用将按值复制到函数的参数中,从而临时增加了对象的引用计数。这是第二个引用来源。
这在documentation中进行了解释:
关于第二个问题:
到getrefcount()
退出时,数组的引用计数将恢复为1,随后的del a
将释放内存。