As Greg pointed..
g = {}
exec open('t.py').read() in g, g
is what you want.
But you can write it also this way:
exec open('t.py').read() in {}
because if you specify only globals, the same
dictionary is also used for locals. (locals() is
used as a default only if you don't specify globals)
OR
Stefan Seefeld wrote:
Bernhard Herzog wrote:
When "foo = Foo" is executed, Foo is first looked up in that new locals
dictionary. That fails, so it's also looked up in the globals
dictionary a. That fails as well because Foo was bound in b. The final
lookup in the builtins also fails, and thus yo
Bernhard Herzog wrote:
Stefan Seefeld <[EMAIL PROTECTED]> writes:
Is there anything wrong with 'exec source in a, b' where
a and b are distinc originally empty dictionaries ? Again,
my test code was
class Foo: pass
class Bar:
foo = Foo
and it appears as if 'Foo' was added to 'a', but when evalua
Stefan Seefeld <[EMAIL PROTECTED]> writes:
> Is there anything wrong with 'exec source in a, b' where
> a and b are distinc originally empty dictionaries ? Again,
> my test code was
>
> class Foo: pass
> class Bar:
>foo = Foo
>
> and it appears as if 'Foo' was added to 'a', but when evaluating
Peter Hansen wrote:
Stefan Seefeld wrote:
Indeed, using 'globals()' and 'locals()' works. However,
both report the same underlaying object, which is a bit
confusing. (Under what circumstances does 'locals()' return
not the same object as 'globals()' ?)
When you aren't at the interactive prompt...
Stefan Seefeld wrote:
Indeed, using 'globals()' and 'locals()' works. However,
both report the same underlaying object, which is a bit
confusing. (Under what circumstances does 'locals()' return
not the same object as 'globals()' ?)
When you aren't at the interactive prompt... there are
no "locals
Do Re Mi chel La Si Do wrote:
Hi !
Try :
exec f in globals(),locals()
or
exec(f,globals(),locals())
or
exec f in globals(),globals()
or
exec(f,globals(),globals())
Indeed, using 'globals()' and 'locals()' works. However,
both report the same underlaying object, which is a bit
confus
Hi !
Try :
exec f in globals(),locals()
or
exec(f,globals(),locals())
or
exec f in globals(),globals()
or
exec(f,globals(),globals())
@-salutations
Michel Claveau
--
http://mail.python.org/mailman/listinfo/python-list
hi there,
I have trouble running some python code with 'exec':
t.py contains:
class Foo: pass
class Bar:
f = Foo
From a python shell I do:
>>> f = ''.join(open('t.py').readlines())
>>> exec f in {}, {}
Traceback (most recent call last):
File "", line 1, in ?
File "", line 2, in ?
File "",