Python语法错误:pyflakes只检测到许多错误

时间:2016-02-19 17:36:00

标签: python vim syntastic pyflakes

我们说我有以下代码:

def incr(d, a)
    r = {}
    for key, value in d.items():
        if key != a:
            value += 1
        r[key] = value
    return r
def decr(d, a)
    r = {}
    for key, value in d.items():
        if key == a:
            value -= 1
        r[key] = value
    retur r

可以看出,它在两个定义中都错过了:,并且在最后一行还包含retur而不是return。但是,如果我通过pyflakes(类似pyflakes test.py)运行它,它只报告所有错误中的第一个:

$ pyflakes test.py
test.py:9:15: invalid syntax
def incr(d, a)
              ^

一旦我修复了第一个,它就会在第二次运行时移动到下一个:

$ pyflakes test.py
test.py:18:15: invalid syntax
def decr(d, a)
              ^

所以,我的问题是我错过了什么,或者是否可以一次显示所有可能的错误?

(事实上,我试图为vim使用syntastic插件 - 但是由于上述行为,合成本身只显示vim中的第一个错误'位置列表......)

感谢。

1 个答案:

答案 0 :(得分:2)

Pyflakes不打算检查语法错误。它是一种用于检查违反编码标准的错误的工具,由于代码仍然可以运行,因此可能无法检测到这些错误。例如,未使用的导入或变量。

python解释器抛出了语法错误,而不是pyflakes库。