我对__builtin__模块及其使用方式很好奇,但我在Python3中找不到它!为什么它被移动了?
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__
>>>发布于 2012-01-29 03:09:12
在Python3中,__builtin__模块被重命名为builtins。
这一改变解决了普通Python开发人员的两个困惑。
'__builtins__'还是'__builtin__'?该死的% s!__builtin__一个special method name还是一个模块?我不知道。造成这种混乱的主要原因是违反了pep8约定。此外,模块上缺乏多元化也阻碍了沟通。Guido在解释http://mail.python.org/pipermail/python-ideas/2009-March/003821.html中的以下内容时必须用很长的篇幅来说明这两个问题
CPython查看全局变量,其中包含一个特殊的魔术条目
__builtins__(带有's'),它是查找内置函数的字典。当这个dict与默认的内置dict是同一个对象时(它是__builtin__.__dict__,其中__builtin__--不带's‘--是定义内置函数的模块),它为您提供了管理员权限;…
例如,
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
有关如何在名称解析中使用__builtins__的简明解释- __builtin__ module in Python
发布于 2020-08-25 20:58:18
删除所有的pyc文件并再次运行,就这样
https://stackoverflow.com/questions/9047745
复制相似问题