我正在编写交叉兼容的Python 2和3代码,并提供了cheatsheet的一些帮助。我注意到有不同的软件包和模块有助于实现此目的:future
包(例如future.utils
等),six
包和内置__future__
模块。
使用这些包时是否有任何差异需要注意?我应该混合和匹配它们,还是可以编写完全交叉兼容的代码只用其中一个编写?
答案 0 :(得分:7)
就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 agreement future
如果您可以放弃对旧版本python的支持,six
优先于override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
if (segue.identifier == "yourSegueIdentifer") {
// initialize new view controller and cast it as your view controller
var viewController = segue.destinationViewController as AnotherViewController
// your new view controller should have property that will store passed value
viewController.passedValue = valueToPass
}
}
。