我正在编写适用于Python 2和Python 3的代码。 但是理论上没有问题,但是有Python问题。
现在,我正在构建和使用Python 2.7.5和Python 3.7.4。
这是我的代码的一部分
ex)
if sys.version_info < (3,):
print(keys),;
print(values)
else:
print(keys,'/ ', end='')
print(values)
此代码使用sys.version检查Python版本,相应的'if'将起作用。
但是,当然有语法错误。 Python 2不支持[end ='']。
我认为... 即使您实际上忽略了它并对其执行操作,也没有问题代码。 我尝试了“尝试除外”,但语法错误未被忽略。
在编织兼容代码时,Python2和Python3如何不能更改行?
答案 0 :(得分:4)
导入软件包print_function
并尝试
from __future__ import print_function
答案 1 :(得分:2)
在这种情况下,只需添加以下内容即可在Python 2和Python 3中获得Python 3 print
函数:
from __future__ import print_function
在文件的最顶部,然后仅使用Python 3语法。
关于避免SyntaxError
脱离实际上不能用__future__
导入固定的不兼容结构,唯一的解决方案是将不兼容的代码放在单独的模块中(公共模块可以进行版本测试,以从适用于Python版本的专用模块中导入实现,或者eval
包含包含相应版本代码的字符串(exec
通常不起作用,因为它在转换过程中也从关键字语句更改为内置函数; eval
+ compile
两者相同)。
没有办法只是“关闭语法检查”,因为无效的语法在定义上意味着解析器遇到了不可恢复的错误。您不会想要尝试继续下去,而是猜测它在剩余的垃圾状态下的其他含义。