[Python-3000] Ripping out exec
Guido van Rossum
guido at python.org
Sat Sep 2 04:26:46 CEST 2006
On 9/1/06, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Guido van Rossum wrote:
> > I would just rip it out.
>
> I don't understand this business about ripping out
> exec. I thought that exec had to be a statement so
> the compiler can tell whether to use fast locals.
> Do you have a different way of handling that in mind
> for Py3k?
Yes. If we implement the module-level analysis it should be easy
enough to track whether 'exec' refers to the built-in function. (We're
already planning to add some kind of prohibition against outside
modules poking new globals into a module that shadow built-ins.)
But I also see no bones in requiring the use of a dict arg if you want
to observe the side effects of the exec'ed code. So instead of
def f(s):
exec s
print a # presumably s must contain an assignment to a
you'd have to write
def f(s):
ns = {}
exec(s, ns)
print ns['a']
This makes it a lot clearer what happens IMO.
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-3000
mailing list