[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


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



More information about the Python-Dev mailing list