python 2 vs 3 与 pylint 的兼容性测试给出错误

问题描述 投票:0回答:1

我目前正在致力于将代码从 Python 2 迁移到 Python 3。 为此,我们想到使用

pylint
通过简单的打印来检查以下代码的兼容性测试。

文件_1.py

print "Hello"

文件_2.py

print("Hello")

在上面的情况下,两者都可以在 Python 2 中工作,但是

File_1.py
在 Python 3 中会出现语法错误。

当我对以下文件运行 pylint 时,我在这两个文件上得到相同的报告。 逻辑上

File_2.py
是Python兼容的,那么为什么pylint将其显示为错误代码E? 我是不是做错了什么...?

pylint --py3k File_1.py File_2.py
No config file found, using default configuration

************* Module File_1
E: 1, 0: print statement used (print-statement)
************* Module File_2
E: 1, 0: print statement used (print-statement)

----------------------------------------------------------------------
Your code has been rated at -40.00/10 (previous run: -40.00/10, +0.00)

代码和python2.7 pylint输出

Python3.7 pylint 输出

Python2 pylint版本

Python3 pylint版本

python python-3.x python-2.7 pylint
1个回答
0
投票

该错误仅仅意味着

pyenv
不希望您使用
print
statements 而是鼓励(不,是要求)您使用
print
function 调用,即使在 Python 2.7 中也是如此,基本上是为了向前兼容Python 3.

如果将

from __future__ import print_function
添加到脚本中,错误就会消失。这基本上告诉 Python
print
指的是函数(需要括号)而不是(仅限 Python 2)
print
语句(接受它们,但不需要它们)。

换句话说,没有

print("Hello")
导入的
from __future__
在语法上等同于 Python 2 中的
print "Hello"

替代解决方法是禁用此错误,但为了将代码移植到 Python 3 同时保留 Python 2 兼容性,你肯定不希望这样。

© www.soinside.com 2019 - 2024. All rights reserved.