8

在这个小抄的帮助下,我正在编写交叉兼容的 Python 2 和 3 代码。我注意到有不同的包和模块可以帮助做到这一点:future包(例如future.utils等)、six包和内置__future__模块。

使用这些软件包时有什么需要注意的区别吗?我应该混合和匹配它们,还是可以编写完全交叉兼容的代码,只用它们之一编写?

4

1 回答 1

10

在 python 2-3 兼容性方面:

__future__- 是 python 中的一个内置模块,它允许您在 python 版本中使用可选功能,它们是可选的(相对于强制)。例如,unicode_literals在 中是可选的,python2.7但在python3.0.

sixpython2- 主要重命名模块/函数以在to之间产生更高的兼容性python3,但实际上并没有向后移植(或向前移植)功能。它也支持 python 版本>=2.4

future- 更现代,只支持python>=2.6,>=3.3,功能更丰富。

如果您可以放弃对旧版本的 python 的支持,似乎有一些协议future首选的。six

于 2017-02-26T21:12:05.977 回答