2017-02-08 15 views
3

我正在寫這個cheatsheet的一些幫助來編寫交叉兼容的Python 2和3代碼。我注意到有不同的軟件包和模塊可以幫助您做到這一點:future程序包(例如future.utils等),six程序包和內置的__future__模塊。編寫交叉兼容的Python 2/3:__future__,six和future.utils之間的區別?

使用這些軟件包時是否有任何區別需要注意?我應該混合並匹配它們,還是可以編寫完全交叉兼容的代碼,只用其中的一種編寫代碼?

回答

4

在蟒蛇2-3兼容性方面:

__future__ - 是一個內置的Python模塊,它允許你在它們是可選的(VS強制性)Python版本使用的可選功能。例如,unicode_literalspython2.7中是可選的,但在python3.0中成爲強制性的。

six - 主要重命名模塊/函數以產生python2python3之間的較高兼容性,但實際上並沒有backport(或轉發端口)功能。它也支持python版本>=2.4

future - 更現代,只支持python>=2.6,>=3.3,並且功能更豐富。

看起來像there is some agreementfuture優於six如果你可以放棄支持老版本的python。