我正在编写交叉兼容的 Python 2 和 3 代码,并从中得到一些帮助备忘单 http://python-future.org/compatible_idioms.html。我注意到有不同的包和模块可以帮助做到这一点:future
包(例如future.utils
等),six
包,以及内置的__future__
module.
使用这些包时有什么需要注意的区别吗?我应该混合和匹配它们,还是可以只用其中之一编写完全交叉兼容的代码?
在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
,并且功能更加丰富。
似乎有一些协议 https://docs.python.org/3/howto/pyporting.html that future
优先于six
如果你可以放弃对旧版本 python 的支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)