Python3中的__builtin__模块在哪里? 为什么重命名?
我很好奇__builtin__
模块以及它是如何使用的,但我无法在Python3中find它! 为什么感动?
Python 2.7
>>> import __builtin__ >>>
Python 3.2
>>> import __builtin__ Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named __builtin__ >>>
__builtin__
模块在Python3中被重命名为builtins。
这个变化为普通的Python开发人员解决了两个困惑。
- 是全局命名空间中的
'__builtins__'
还是'__builtin__'
? 该死! -
__builtin__
是一个特殊的方法名称或模块? 我不知道。
这种混淆主要是因为违反了pep8惯例而产生的。 而且,模块上缺less多元化也妨碍了沟通。 这些都很好地说明了圭多必须从http://mail.python.org/pipermail/python-ideas/2009-March/003821.html解释以下内容:;
[CPython]查看全局variables,其中包含一个特殊的魔术项
__builtins__
(带有“s”),这是查找内置函数的字典。 当这个字典是默认的内置字典相同的对象(这是__builtin__.__dict__
,其中__builtin__
– 没有' – 是定义内置函数的模块),它给你的主pipe权限; …
例如,
Python2.7
>>> import __builtin__ >>> vars(globals()['__builtins__']) is vars(__builtin__) True >>>
Python3.2
>>> import builtins >>> vars(globals()['__builtins__']) is vars(builtins) True >>>
相关资源 :
其他名称变更 – http://docs.pythonsprints.com/python3_porting/py-porting.html#name-changes
有关如何在名称parsing中使用__builtins__
的简明说明,请__builtins__
Python中的__builtin__模块