【发布时间】:2015-01-20 16:20:10
【问题描述】:
我有以下脚本:
a.py
print(__builtins__.max)
import b
以及以下模块:
b.py
print(__builtins__.max)
用python3 a.py 启动它们我明白了:
<built-in function max>
Traceback (most recent call last):
File "a.py", line 2, in <module>
import b
File "/home/antonio/Scrivania/b.py", line 1, in <module>
print(__builtins__.max)
AttributeError: 'dict' object has no attribute 'max'
所以我不明白。为什么在脚本中 __builtins__ 分配给内置模块,而不是在模块中 __builtins__ 分配给字典?
【问题讨论】:
-
@martineau:不,
__builtins__是全球性的。这就是到处解析内置对象的方式。但它是一个实现细节,一个位置的模块,所有其他位置的字典。 -
看起来 Python 开发人员没有正确考虑这一点。我打算在 Python 2.x 和 3.x 中使用
__builtins__在一个模块中普遍访问ImportError,不幸的是,它有自己的ImportError作为公共API 的一部分。好像不行。
标签: python python-3.x