【发布时间】:2014-06-13 09:39:41
【问题描述】:
我想做一个在 2.7 和 3.4 版本上运行的 Python 程序。例如,我只有很少的更改可以像 print("", end="") 那样工作。
有没有类似的标签
if __name__ == "__main__":
或其他东西,我可以将其放入我的代码中以获得类似的东西:
1. python_version = platform.version_tuple()
2. if python_version[0] == 3:
3. print("myprint", end="")
4. else:
5. print "my second print",
如何避免这段代码出现任何编译错误?
感谢您的所有回答,我的问题不是很清楚,但您确实提供了帮助。阅读您的答案后,我找到了这个详细的网站:
http://python3porting.com/noconv.html
它解释了如何将 python2 和 python3 处理为相同的代码,而不将其分成 2 个冗余部分。
正确的做法是使用 sys.version
1. import sys
2. if sys.version < '3':
3. #some code for python 3.X
4. else:
5. #some code for older python
或者使用future库中的print_function
1. from __future__ import print_function
对于打印问题和 ImportError 错误如下
1. try:
2. from urllib.request import urlopen
3. except ImportError:
4. from urllib import urlopen
再次感谢您的帮助
【问题讨论】:
-
您也可以在 python2 中的 print 语句周围使用括号。但是如果你想在一个版本中使用不与另一个版本一起编译的语法,你必须把它放在一个单独的模块中,并且只有在版本匹配时才导入它。