Question About When Objects Are Destroyed
Jon Forrest
nobozo at gmail.com
Fri Aug 4 19:11:18 EDT 2017
Consider the following Python shell session (Python 3.6.2, Win64):
>>> def givemetwo():
... x = 'two'
... print(id(x))
...
>>> givemetwo()
1578505988392
So far fine. My understanding of object existence made me
think that the object referred to by x would be deleted when
the givemetwo() function returned, like a local variable in C.
However, this isn't true, as shown by the following in the same
session:
>>> import ctypes
>>> print (ctypes.cast(1578505988392, ctypes.py_object).value)
two
This shows that the object still exists, which was a surprise.
Will this object ever be deleted? I'm learning about function
decorators which, as my early studies tell me, depend on calling
a function defined inside another function. This suggests that
objects defined inside functions are never deleted, otherwise
function decorators would never work. (I'm not 100% sure
my understanding of function decorators is correct since I'm
still learning about them).
What's the right way to think about this?
Cordially,
Jon Forrest
More information about the Python-list
mailing list