我正在寫這個cheatsheet的一些幫助來編寫交叉兼容的Python 2和3代碼。我注意到有不同的軟件包和模塊可以幫助您做到這一點:future
程序包(例如future.utils
等),six
程序包和內置的__future__
模塊。編寫交叉兼容的Python 2/3:__future__,six和future.utils之間的區別?
使用這些軟件包時是否有任何區別需要注意?我應該混合並匹配它們,還是可以編寫完全交叉兼容的代碼,只用其中的一種編寫代碼?
我正在寫這個cheatsheet的一些幫助來編寫交叉兼容的Python 2和3代碼。我注意到有不同的軟件包和模塊可以幫助您做到這一點:future
程序包(例如future.utils
等),six
程序包和內置的__future__
模塊。編寫交叉兼容的Python 2/3:__future__,six和future.utils之間的區別?
使用這些軟件包時是否有任何區別需要注意?我應該混合並匹配它們,還是可以編寫完全交叉兼容的代碼,只用其中的一種編寫代碼?
在蟒蛇2-3兼容性方面:
__future__
- 是一個內置的Python模塊,它允許你在它們是可選的(VS強制性)Python版本使用的可選功能。例如,unicode_literals
在python2.7
中是可選的,但在python3.0
中成爲強制性的。
six
- 主要重命名模塊/函數以產生python2
到python3
之間的較高兼容性,但實際上並沒有backport(或轉發端口)功能。它也支持python版本>=2.4
。
future
- 更現代,只支持python>=2.6,>=3.3
,並且功能更豐富。
看起來像there is some agreementfuture
優於six
如果你可以放棄支持老版本的python。