是否最好使用__future__或future来编写与python2和python3兼容的代码?

时间:2018-04-03 17:02:22

标签: python python-3.x python-2.7 compatibility

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

到目前为止,我收集到的只是未来仅适用于> = 2.6或> = 3.3。

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

__future__模块内置于Python,用于允许程序员提前使用尚未被视为完整的功能集。虽然某些功能(例如from __future__ import print_function)专门用于帮助将Python 2程序移植到Python 3,但它也可用于提前访问任何版本的高级功能。

__future__是唯一的,因为某些导入(例如print_function)实际上可以更改解释器接受的语法。

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

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

答案 2 :(得分:1)

除非你有非常具体的理由支持Python 2.x,否则Python 3.x就是未来。自发布以来已经超过10年了。

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

TLDR:是时候使用Python 3