Re:A Python Mystery
by maxk42 on Monday April 30, 2012 @05:21PM
(#3911571)
Is it possible x is referring to the memory where x had previously been allocated?
[ Parent
| on HN ]
It turns out that this is not actually as surprising as I had first thought -- del unbinds a variable from the (local) scope. Since exec results in a new Python frame, it is in that frame's scope that x is deleted, not in the outer frame (of the function exec_code_object_and_return_x).
I'm in the process of blogging about this and other quirks of exec -- I'll post back here once that's up.
Re:A Python Mystery
by revelation on Monday April 30, 2012 @05:27PM
(#3911608)
At least for Python 2.7, you would expect the code run with exec to share the locals and globals with the environment where you called exec from. Thats why the x = x + 1 works, after all.