我在Python 2.7.2中编写了一些代码,现在我可能需要切换到3.4.3,但是我的代码现在断了(只是print
语句,但谁知道还有什么)。是否有可能以符合2.7.2和3.4.3的方式编写语法?
我刚刚开始使用Python,并且不希望以一种风格构建习惯,然后必须在以后再用其他版本重新学习。
答案 0 :(得分:1)
是的,但取决于您的代码。你有很多选择:
from __future__ import ...
(使您的代码适用于Python 2& 3 - 请参阅this和this)modernize
six
答案 1 :(得分:0)
是的,Python代码可以与Python 2和3兼容。
有3种选择:
保持源代码本身与兼容 Python 2和3 ;这是最常用的方式
对Python 2和3使用单独代码;通常不是很有用,但对于某些低级代码可能是可以接受的。例如CherryPy wsgiserver(请注意文件wsgiserver2.py
和wsgiserver3.py
)。
在Python 2或Python 3中编写代码,并使用自动工具(如2to3或3to2)翻译到其他版本。
当Python 3首次发布时,2to3方式是首选方式。您可以在What’s New In Python 3.0中找到它:“不建议尝试编写在Python 2.6和3.0下都未更改的源代码。”但从那时起,时间已经发生了变化。引入的一些内容使得为Python 2和3编写代码变得更加容易 - 例如Python 3.3中的u""
语法。自2010年以来,工具3to2也没有得到太多更新......
当编写在Python 2和3上都没有改变的代码时,可能需要一些兼容性代码,只需要很少的简单if
;以flask/_compat.py为例。如果这还不够,请使用six。
一些资源如何编写适用于Python 2和3的代码:
http://lucumr.pocoo.org/2011/1/22/forwards-compatible-python/
http://python-future.org/compatible_idioms.html#essential-syntax-differences
Python 2/3问题主要适用于正在升级到Python 3的库,共享代码和Python 2项目。如果您要启动的项目不是库,那么只需使用 Python 3 强大>如果可能的话。
答案 2 :(得分:0)
上面已经有了一些很好的答案。快速修复打印问题的方法是使用 future 模块,将Python 3的一些功能向后移植到Python 2中。
我建议您至少使用新的打印功能编写Python 2.7代码。为此,请从将来导入新的打印功能。即。
from __future__ import print_function
现在,您将使用print as:
在Python 2中获得语法错误 print x
现在必须这样做:
print(x)
其他解决方案如2to3和6存在,但目前这些可能有点复杂,尤其是在学习Python时。