[Python-Dev] Deletion order when leaving a scope? (original) (raw)
"Martin v. Löwis" martin at v.loewis.de
Fri Jan 19 04:10:23 CET 2007
- Previous message: [Python-Dev] Deletion order when leaving a scope?
- Next message: [Python-Dev] Problem between deallocation of modules and func_globals
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Larry Hastings schrieb:
I just ran a quickie experiment and determined: when leaving a scope, variables are deleted FIFO, aka in the same order they were created.
Your experiment was apparently incomplete: Variables are not deleted in the same order in which they are created:
py> class A: ... def init(self, n):self.n = n ... def del(self): print "Deleting", self.n ... py> def f(x): ... if x: ... a = A("a") ... b = A("b") ... else: ... b = A("b") ... a = A("a") ... py> f(0) Deleting a Deleting b
Here, it creates b first, then a (it's the else case), yet deletes them in reverse order.
As others have pointed out, the deletion order is the one indicated by the locals array:
py> f.func_code.co_varnames ('x', 'a', 'b')
Regards, Martin
- Previous message: [Python-Dev] Deletion order when leaving a scope?
- Next message: [Python-Dev] Problem between deallocation of modules and func_globals
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]