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 a
would release the memory.