Python代码可以满足2.7.x和3.4.x的要求吗?

时间:2015-04-07 21:58:47

标签: python python-2.7

我在Python 2.7.2中编写了一些代码,现在我可能需要切换到3.4.3,但是我的代码现在断了(只是print语句,但谁知道还有什么)。是否有可能以符合2.7.2和3.4.3的方式编写语法?

我刚刚开始使用Python,并且不希望以一种风格构建习惯,然后必须在以后再用其他版本重新学习。

3 个答案:

答案 0 :(得分:1)

是的,但取决于您的代码。你有很多选择:

答案 1 :(得分:0)

是的,Python代码可以与Python 2和3兼容。

有3种选择:

  • 保持源代码本身与兼容 Python 2和3 ;这是最常用的方式

  • 对Python 2和3使用单独代码;通常不是很有用,但对于某些低级代码可能是可以接受的。例如CherryPy wsgiserver(请注意文件wsgiserver2.pywsgiserver3.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的代码:

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时。