'_builtins__'来自与main不同的模块?

时间:2013-06-24 17:24:27

标签: python

我注意到globals()字典包含模块内部与主脚本不同的数据。我看到主要的区别是'__builtins__'变量。

这是意料之外的,有人可以解释为什么会发生这种情况吗?

$> 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 个答案:

答案 0 :(得分:1)

the documentation中描述了它们不同的原因。

  

globals()返回表示当前全局符号的字典   表。这始终是当前模块的字典(在   函数或方法,这是定义它的模块,而不是   它被称为的模块。