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