2013-06-24 59 views
0

我注意到globals()字典在模塊內部包含與主腳本不同的數據。我看到的主要區別是'__builtins__'變量。'__builtins__'是否與main不同?

這是意想不到的,有人能解釋爲什麼會發生這種情況嗎?

$> cat main.py 
import foo 
print "From main", globals() 

$> cat foo.py 
print "From module:", globals() 

$> python main.py 
From module: {'__builtins__': {'bytearray': <type 'bytearray'>, 
'IndexError': <type 'exceptions.IndexError'>, 'all': <built-in function all>, 
'help': Type help() for interactive help, or help(object) for help about object. 
#...much more stuff 
From main {'__builtins__': <module '__builtin__' (built-in)>, 
'__file__': 'main.py', '__package__': None, '__name__': '__main__', 
'foo': <module 'foo' from '.../foo.pyc'>, '__doc__': None} 

我使用了Python版本2.6.6

$> python --version 
Python 2.6.6 
+1

這是爲什麼會出乎意料?也許如果我們知道你的期望,我們可以提供更好的答案... – mgilson

+0

我期待'globals()'在模塊內部/外部是唯一的 – petrum

回答

1

之所以他們在the documentation描述不同。

globals()返回表示當前全局符號表 表的字典。這總是當前模塊的字典(在 功能或方法中,這是定義它的模塊,而不是調用它的 模塊)。

+0

感謝您的快速回復! – petrum

相關問題