简体   繁体   English

如果您从未重新定义任何内置函数,为什么要导入内置函数?

[英]Why import builtins if you never redefine any built-in functions?

I am looking at the code in this repo https://github.com/datacenter/cobra and I am seeing imports from builtins as follows in a few files: 我正在查看此repo https://github.com/datacenter/cobra中的代码,我看到几个文件中的内置导入如下:

cobra/internal/codec/jsoncodec.py:15:from builtins import str
cobra/internal/codec/xmlcodec.py:15:from builtins import str
cobra/internal/base/moimpl.py:16:from builtins import next
cobra/internal/base/moimpl.py:17:from builtins import str
cobra/internal/base/moimpl.py:18:from builtins import object
cobra/internal/rest/accessimpl.py:15:from builtins import object
cobra/internal/rest/accessimpl.py:16:from builtins import str
cobra/mit/session.py:15:from builtins import str
cobra/mit/session.py:16:from builtins import object
cobra/mit/meta.py:16:from builtins import str
cobra/mit/meta.py:17:from builtins import next
cobra/mit/meta.py:18:from builtins import object
cobra/mit/access.py:21:from builtins import object
cobra/mit/naming.py:15:from builtins import next
cobra/mit/naming.py:16:from builtins import str
cobra/mit/naming.py:17:from builtins import object
cobra/mit/request.py:15:from builtins import str
cobra/mit/request.py:16:from builtins import object

What is the logic/what is gained by doing this? 这样做的逻辑是什么? There is no place in the module where these objects are re-defined. 模块中没有位置可以重新定义这些对象。

On a side note, this breaks the 2.7 compatibility I was expecting from this module as specified in the docs. 在旁注中,这打破了我期望从文档中指定的此模块的2.7兼容性。

I don't know why its done in cobra specifically, but its a trick for writing code that works in python 2 and 3. See compatible_idioms . 我不知道为什么它专门用于眼镜蛇,但它是编写在python 2和3中工作的代码的技巧。请参阅compatible_idioms It shouldn't break 2.7 but you have to write "3x-ish" code. 它不应该打破2.7,但你必须写“3x-ish”代码。

update 更新

For 2.x, the builtins module needs to be installed from pypi . 对于2.x,需要从pypi安装builtins模块。 Its not the native builtin functions, but 3.x compatible updates. 它不是本机内置函数,而是3.x兼容更新。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM