在这个小抄的帮助下,我正在编写交叉兼容的 Python 2 和 3 代码。我注意到有不同的包和模块可以帮助做到这一点:future
包(例如future.utils
等)、six
包和内置__future__
模块。
使用这些软件包时有什么需要注意的区别吗?我应该混合和匹配它们,还是可以编写完全交叉兼容的代码,只用它们之一编写?
在这个小抄的帮助下,我正在编写交叉兼容的 Python 2 和 3 代码。我注意到有不同的包和模块可以帮助做到这一点:future
包(例如future.utils
等)、six
包和内置__future__
模块。
使用这些软件包时有什么需要注意的区别吗?我应该混合和匹配它们,还是可以编写完全交叉兼容的代码,只用它们之一编写?
在 python 2-3 兼容性方面:
__future__
- 是 python 中的一个内置模块,它允许您在 python 版本中使用可选功能,它们是可选的(相对于强制)。例如,unicode_literals
在 中是可选的,python2.7
但在python3.0
.
six
python2
- 主要重命名模块/函数以在to之间产生更高的兼容性python3
,但实际上并没有向后移植(或向前移植)功能。它也支持 python 版本>=2.4
。
future
- 更现代,只支持python>=2.6,>=3.3
,功能更丰富。
如果您可以放弃对旧版本的 python 的支持,似乎有一些协议是future
首选的。six