我目前正在致力于将代码从 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 pylint版本
Python3 pylint版本
该错误仅仅意味着
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 兼容性,你肯定不希望这样。