据我了解,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将释放内存。

10-04 13:43