is it a bug in exec?

long longqian9509 at gmail.com
Fri Jan 21 16:19:47 EST 2011


I see now. Thank you so much.
I think namespace is really a confusing part in Python.
On Friday, January 21, 2011 11:00:32 AM UTC-6, Peter Otten wrote:
> There are only two cases that matter: identical local/global namespaces and 
> distinct local/global namespaces:
>> >>> code = """\
> ... x = 42 # put x into the local namespace
> ... def f():
> ... print(x) # look up x in the global namespace
> ... f()
> ... """
> >>> exec(code, {}, {})
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "<string>", line 4, in <module>
> File "<string>", line 3, in f
> NameError: global name 'x' is not defined
> >>> ns = {}
> >>> exec(code, ns, ns)
> 42
>> Also note that
>> >>> globals() is locals()
> True
>> on the module level.
>> Peter



More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /