execfile in global scope

Bengt Richter bokr at oz.net
Wed Aug 24 13:42:08 EDT 2005


On 24 Aug 2005 01:50:25 -0700, v.vayer at gmail.com wrote:

>I need to execfile() from a function in order to set value for a global
>variable from inside the executed file. I know there are "globals" and
>"locals" optional arguments for execfile, but I just can't figure out
>how to use them correctly. Here is an example:
>
>Change.py
>=========
>x = 555
>
>Main.py
>=======
>
>def changevar():
>    execfile("change.py")
     execfile("change.py", globals())  # the builtin globals function returns
                                       # the current module's global namespace
                                       # as a writable dict
>
>x = 111   # global var
>changevar()
>print x   # returns 111 instead of 555
>

 >>> open('change.py','w').write("""\
 ... x = 555
 ... """) 
 >>> print '%s\n%s%s' %('-'*30, open('change.py').read(), '-'*30)
 ------------------------------
 x = 555
 ------------------------------
 >>> dir()
 ['__builtins__', '__doc__', '__name__']
 >>> x = 111
 >>> x
 111
 >>> def changevar():
 ...     execfile('change.py', globals())
 ...
 >>> x
 111
 >>> changevar()
 >>> x
 555

Regards,
Bengt Richter



More information about the Python-list mailing list