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
這是爲什麼會出乎意料?也許如果我們知道你的期望,我們可以提供更好的答案... – mgilson
我期待'globals()'在模塊內部/外部是唯一的 – petrum