首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python3中的__builtin__模块在哪里?为什么要重命名?

Python3中的__builtin__模块在哪里?为什么要重命名?
EN

Stack Overflow用户
提问于 2012-01-29 03:07:02
回答 2查看 52K关注 0票数 76

我对__builtin__模块及其使用方式很好奇,但我在Python3中找不到它!为什么它被移动了?

Python 2.7

代码语言:javascript
运行
复制
>>> import __builtin__
>>>

Python 3.2

代码语言:javascript
运行
复制
>>> import __builtin__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named __builtin__
>>>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
运行
复制
>>> import __builtin__
>>> vars(globals()['__builtins__']) is vars(__builtin__)
True
>>> 

Python3.2

代码语言:javascript
运行
复制
>>> 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

票数 107
EN

Stack Overflow用户

发布于 2020-08-25 20:58:18

删除所有的pyc文件并再次运行,就这样

票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9047745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档