我们说我有以下代码:
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中的第一个错误'位置列表......)
感谢。
答案 0 :(得分:2)
Pyflakes不打算检查语法错误。它是一种用于检查违反编码标准的错误的工具,由于代码仍然可以运行,因此可能无法检测到这些错误。例如,未使用的导入或变量。
python解释器抛出了语法错误,而不是pyflakes库。