As I understand, sys.getrefcount() returns the number of references of an object, which “should” be 1 in the following case:
import sys,numpy
a = numpy.array([1.2,3.4])
print sys.getrefcount(a)
However, it turned out to be 2! So, if I:
del a
Will the “numpy.array([1.2,3.4])” object still be there (no garbage collection)?
When you call
getrefcount(), the reference is copied by value into the function’s argument, temporarily bumping up the object’s reference count. This is where the second reference comes from.This is explained in the documentation:
As to your second question:
By the time
getrefcount()exits, the array’s reference count will to back to 1, and a subsequentdel awould release the memory.