Exec Statement Question

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

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

import sys

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

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

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?



More information about the Python-list mailing list