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

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

参考方案

在python3中,__builtin__模块已重命名为builtins

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

  • 全局命名空间中的是'__builtins__'还是'__builtin__'
    该死的!
  • __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

    Python:无符号32位按位算术 - python

    试图回答另一篇有关其解决方案涉及IP地址和网络掩码的文章时,我陷入了普通的按位算法。在Python中,是否存在一种标准的方式来进行按位AND,OR,XOR,NOT运算,假设输入是“32位”(可能是负数)整数或long,并且结果必须是[[ 0,2 ** 32]?换句话说,我需要一个与无符号长整数之间的C按位运算有效的Python对应物。编辑:具体问题是这样的:…

    Python:如何从字节中提取特定位? - python

    我有一条消息,显示为14 09 00 79 3d 00 23 27。我可以通过调用message[4]从此消息中提取每个字节,例如,这将给我3d。如何从该字节中提取单个8位?例如,如何将24-27位作为单个消息?只需28位? 参考方案 要回答问题的第二部分,您可以使用按位运算来获取特定的位值# getting your message as int i = …

    Python:检查是否存在维基百科文章 - python

    我试图弄清楚如何检查Wikipedia文章是否存在。例如,https://en.wikipedia.org/wiki/Food 存在,但是https://en.wikipedia.org/wiki/Fod 不会,页面只是说:“维基百科没有此名称的文章。”谢谢! 参考方案 >>> import urllib >>> prin…

    Python pytz时区函数返回的时区为9分钟 - python

    由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

    Python Pandas导出数据 - python

    我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…