1 Mar
2001
1 Mar
'01
6:43 p.m.
SP> # top-level SP> def g(): SP> exec "x=3" SP> return x
[me]
Unfortunately this used to work, using a gross hack: when an exec (or import *) was present inside a function, the namespace semantics *for that function* was changed to the pre-0.9.1 semantics, where all names are looked up *at run time* first in the locals then in the globals and then in the builtins.
I don't know how common this is -- it's pretty fragile. If there's a great clamor, we can put this behavior back after b1 is released.
I spoke too soon. It just works in the latest 2.1b1. Or am I missing something? --Guido van Rossum (home page: http://www.python.org/~guido/)