Python 使用Pylint在'def'之后的多个空格没有错误的空格警告?

Python 使用Pylint在'def'之后的多个空格没有错误的空格警告?,python,coding-style,whitespace,pylint,pep8,Python,Coding Style,Whitespace,Pylint,Pep8,我将问题简化为以下最小示例: “示例” def answer(): “回答” 返回42 Pylint不会给出任何“坏空格”警告: 您的代码评级为10.00/10(上一次运行:10.00/10,+0.00) Pylint确实会对括号前面的空格、尾随空格或换行符等发出警告。为什么在这种情况下没有警告?空白可用于: (你想要多少就有多少) ,重要 在返回的情况下,如果其缩进与其块中的其他元素不一致,则会出现错误: for x in p: r.append(l[i:i+1] + x

我将问题简化为以下最小示例:

“示例”
def answer():
“回答”
返回42
Pylint不会给出任何“坏空格”警告:

您的代码评级为10.00/10(上一次运行:10.00/10,+0.00)


Pylint确实会对括号前面的空格、尾随空格或换行符等发出警告。为什么在这种情况下没有警告?

空白可用于:

  • (你想要多少就有多少)
  • ,重要
返回的情况下
,如果其缩进与其块中的其他元素不一致,则会出现错误:

for x in p:
        r.append(l[i:i+1] + x)
    return r                # error: inconsistent dedent
但在您的情况下,它在
def
块中是单独的。

这些都不适用于这里。

我建议您在您的案例中使用Flake8

关键字后有多个空格(E271)


如果您对Flake8感兴趣,它是Flake8所有代码错误的页面

如果您在它们之间放置了无数个选项卡,它也不会对
return 42
发出警告。这是因为这不是pep8标准的正式组成部分(像这样的空格可以用来进行更清晰的代码划分,例如,排列东西)。不一定是“在关键字之后”,但在对齐dict文本(将所有文本放入列中)时,类似的原则也适用。是的,错误的缩进显然是另一个问题——它会改变代码的行为,甚至可能导致错误。我说的更多的是“不必要的”空白。也许问题应该是当有关于
def……():
的规则时,为什么没有一个规则来禁止
def……():
?(在注释中必须使用点而不是空格。)我不明白为什么对后者有规则,但对第一个示例没有规则。@finefoot我想是因为前者允许对齐(不太可能与def对齐,但也不是不可能),而后者意味着解析函数名会失败。