[Python-Dev] violently deprecating exec without in (was: nested scopes. global: have I got it right?)

Guido van Rossum guido@digicool.com
Thu, 01 Mar 2001 21:43:34 -0500


> >   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/)