【问题标题】:Writing cross-compatible Python 2/3: Difference between __future__, six, and future.utils?编写交叉兼容的 Python 2/3:__future__、6、future.utils 的区别?
【发布时间】:2017-06-25 22:27:00
【问题描述】:
在cheatsheet 的帮助下,我正在编写交叉兼容的 Python 2 和 3 代码。我注意到有不同的包和模块可以帮助做到这一点:future 包(例如future.utils 等)、six 包和内置的__future__ 模块。
在使用这些软件包时有什么需要注意的区别吗?我应该混合和匹配它们,还是可以编写完全交叉兼容的代码,只用它们之一编写?
【问题讨论】:
标签:
python
python-2.7
python-3.x
six
【解决方案1】:
在python 2-3兼容性方面:
__future__ - 是 python 中的内置模块,它允许您在 python 版本中使用可选功能,它们是可选的(相对于强制)。例如,unicode_literals 在 python2.7 中是可选的,但在 python3.0 中成为必需的。
six - 主要重命名模块/函数以在python2 和python3 之间产生更高的兼容性,但实际上并没有向后移植(或向前移植)功能。它也支持python版本>=2.4。
future - 更现代,仅支持python>=2.6,>=3.3,功能更丰富。
似乎there is some agreementfuture 比six 更受欢迎,如果您可以放弃对旧版本 python 的支持。