我很好奇__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__
>>>
答案 0 :(得分:75)
在Python3中__builtin__
模块已重命名为builtins
。
此更改为普通Python开发人员解决了两个混乱的来源。
'__builtins__'
还是'__builtin__'
?
Darn s! __builtin__
是special method name还是模块?我不能
告诉。这种混淆主要是因为违反了pep8惯例。此外,模块上缺乏多元化也妨碍了沟通。 Guido必须从http://mail.python.org/pipermail/python-ideas/2009-March/003821.html解释以下内容的长度极大地说明了这两点:
[CPython]查看全局变量,其中包含一个特殊的魔术条目
__builtins__
(带有's')是查找内置函数的字典。当此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
答案 1 :(得分:-4)
删除所有pyc文件,然后再次运行 多数民众赞成