我正在查看此 repo 单https://github.com/datacenter/cobra中的代码,并且在一些文件中看到了从buildins导入的内容,如下所示:

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

这样做的逻辑是什么/获得了什么?在模块中没有可以重新定义这些对象的地方。

附带说明,这破坏了我在docs中指定的该模块的2.7兼容性。

最佳答案

我不知道为什么要专门在眼镜蛇中做,但是这是编写可在python 2和3中工作的代码的技巧。请参阅compatible_idioms。它不应破坏2.7,但您必须编写“3x ish”代码。

更新

对于2.x,需要从builtins安装pypi模块。它不是 native 内置函数,而是3.x兼容更新。

关于python - 如果您从未重新定义任何内置函数,为什么要导入内置函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29306516/

10-13 09:14
查看更多