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__模块