编写与 python2 和 python3 兼容的代码时,使用 __future__ 还是 future 更可取?

Is it preferable to use __future__ or future to write code compatible with python2 and python3?

或者是否存在其中一个比另一个更好的特定情况?

到目前为止,我收集到的信息是 future 仅适用于 >=2.6 或 >=3.3。

我目前的代码非常基础,在 python2 和 3 上运行相同,除了使用 print 函数调用。但是,随着时间的推移,代码可能会变得更加复杂,我想使用正确的方法从一开始就编写 python2/3 兼容代码。

Python 2.7 将在 2020 年之后不再维护,请参阅 https://pythonclock.org/

因此,如果你刚开始学习python,我建议你直接使用python 3,而不是使用python 2和导入__future__

除非你有非常具体的理由支持Python2.x,否则Python3.x就是未来。发布至今已有10多年了。

Python 2.7,2.x 系列的最后一个,将于 2020 年结束。https://www.python.org/dev/peps/pep-0373/

TLDR: 是时候使用 Python 3

__future__模块是built-in到Python,提供的目的是让程序员提前使用尚未被视为完整的功能集。尽管某些功能(例如from __future__ import print_function)专门用于帮助将Python 2 程序移植到Python 3,但它也被用于提前访问任何版本的高级功能。

__future__ 是独一无二的,因为某些导入如 print_function 实际上可以改变解释器接受的语法。

python-future 是一个 third-party 模块,是提供兼容性功能的几个模块之一。你也可以看看 six,虽然它现在有点长了,还有 python-modernize。您很可能会发现需要同时使用 __future__future

您可能没有考虑过的另一种策略是将您的源代码转换为 Python2,可以由 2to3 实用程序自动翻译。还有一个 lib3to2 会以另一种方式翻译,尽管我没有这方面的经验。