有没有一种方法可以编译Python代码忽略语法?

时间:2020-01-17 03:59:08

标签: python

我正在编写适用于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如何不能更改行?

2 个答案:

答案 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两者相同)。

没有办法只是“关闭语法检查”,因为无效的语法在定义上意味着解析器遇到了不可恢复的错误。您不会想要尝试继续下去,而是猜测它在剩余的垃圾状态下的其他含义。