[英]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.