homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author josiahcarlson
Recipients
Date 2004年07月22日.16:55:41
SpamBayes Score
Marked as misclassified
Message-id
In-reply-to
Content
Logged In: YES 
user_id=341410
>>> def f():
... y = 5
... print 'y' in globals(), 'y' in locals()
... def i():
... print 'y' in globals(), 'y' in locals()
... i()
...
>>> f()
False True
False False
>>>
>>> def g():
... gl = {};lo={}
... exec '''y = 5
... print 'y' in globals(), 'y' in locals()
... def i():
... print 'y' in globals(), 'y' in locals()
... i()
... ''' in gl, lo
...
>>> g()
False True
False False
That looks constant...but what if we print out 'y'?
>>> def s():
... y = 5
... print 'y' in globals(), 'y' in locals(), y
... def i():
... print 'y' in globals(), 'y' in locals(), y
... i()
...
>>> s()
False True 5
False True 5
>>>
>>> def t():
... gl = {};lo = {}
... exec '''y = 5
... print 'y' in globals(), 'y' in locals(), y
... def i():
... print 'y' in globals(), 'y' in locals(), y
... i()
... ''' in gl, lo
...
>>> t()
False True 5
False False
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
 File "<stdin>", line 3, in t
 File "<string>", line 5, in ?
 File "<string>", line 4, in i
NameError: global name 'y' is not defined
Now why did 'y' stick itself into the locals() of i() in
s()? Is this another bug?
What if we remove the namespaces gl and lo?
>>> def u():
... exec '''y = 5
... print 'y' in globals(), 'y' in locals(), y
... def i():
... print 'y' in globals(), 'y' in locals(), y
... i()
... '''
...
>>> u()
False True 5
False False
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
 File "<stdin>", line 2, in u
 File "<string>", line 5, in ?
 File "<string>", line 4, in i
NameError: global name 'y' is not defined
Nope, still dies. It does seem to be a bug in exec. I'm
still curious why 'y' was placed into i()'s local namespace
in s().
History
Date User Action Args
2007年08月23日 14:23:41adminlinkissue991196 messages
2007年08月23日 14:23:41admincreate

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