【发布时间】:2015-03-27 17:19:21
【问题描述】:
我正在查看此 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
这样做的逻辑/获得了什么?模块中没有重新定义这些对象的地方。
顺便说一句,这破坏了我对文档中指定的该模块的 2.7 兼容性。
【问题讨论】:
-
也许更好的主意是问问项目的开发人员他们为什么要这样做!
-
在模块命名空间中包含这些名称将 1. 比以内置方式访问它们的性能略高一些,并且 2. 不受任何以后导入的模块对内置的重新定义的影响.他们为什么这样做,我不能说;人们只是更喜欢这种方式......
-
哪种情况下需要性能导入内置方法?而且,这种方法不适用于 Python 2.x
-
@MauroBaraldi - 在 2.x 上,
builtins来自pip install futures。没有原生的builtins模块。 -
@tdelaney 感谢您澄清这一点
标签: python python-2.7 python-3.x python-import