Exec Statement Question

Gregory Piñero gregpinero at gmail.com
Mon Apr 9 01:31:40 EDT 2007


I'm curious why this code isn't working how I expect it to:

import sys
d=3

def func1(a,b,c):
    print a,b,c,d
    print sys.path

exec "func1(1,2,3)" in {'func1':func1}

----
returns:
1 2 3 3
[ sys.path stuff ....]

Since I'm telling exec to operate only within the context of the
dictionary I give it, why does it still see sys.path and d?  I figured
it would throw a NameError.

Is there a way to call exec such that it won't have access to any more
objects than I explicitly give it?

Thanks,

Greg



More information about the Python-list mailing list