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