gpt4 book ai didi

python - Python3 中的 __builtin__ 模块在哪里?为什么改名了?

转载 作者:IT老高 更新时间:2023-10-28 20:23:21 27 4
gpt4 key购买 nike

我很好奇 __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__
>>>

最佳答案

__builtin__ 模块在 Python3 中被重命名为 builtins

此更改解决了普通 Python 开发人员的 2 个困惑。

  • '__builtins__' 还是 '__builtin__' 在全局命名空间中?该死的!
  • __builtin__special method name还是一个模块?我不能告诉。

这种混淆主要是因为违反了 pep8惯例。此外,模块上缺乏多元化也阻碍了沟通。 Guido 必须从 http://mail.python.org/pipermail/python-ideas/2009-March/003821.html 解释以下内容的长度极大地说明了这两者。 :

[CPython] looks at the globals, which contain a special magic entry __builtins__ (with an 's') which is the dict where built-in functions are looked up. When this dict is the same object as the default built-in dict (which is __builtin__.__dict__ where __builtin__ -- without 's' -- is the module defining the built-in functions) it gives you supervisor privileges;…

例如,

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

关于python - Python3 中的 __builtin__ 模块在哪里?为什么改名了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047745/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com