用于对齐续行的额外空格

Additional spaces to align continuation lines

我已经开始使用 Flake8 检查我的 python 代码,但是 error/warning 它总是让我感到难以排序的是 "continuation line over/under indented".

Flake8 希望我的续行与起始括号完全对齐。所以在下面的例子中,Flake8 不会喜欢前两个,但会喜欢第三个:(» = 4 spaces, · = single space)

let_us_pass.some_function(with_a_lot_of=['strings'], or_other_arguments,
»   »   »   »   »   »   and_another)

let_us_pass.some_function(with_a_lot_of=['strings'], or_other_arguments,
»   »   »   »   »   »   »   and_another)

let_us_pass.some_function(with_a_lot_of=['strings'], or_other_arguments,
»   »   »   »   »   »   ··and_another)

所以 Flake8 不会抱怨混合 4-space 块和单个 spaces。
我在 PEP8 中只能找到一个示例中的注释:# Hanging indents *may* be indented to other than 4 spaces.

这是否意味着它不受欢迎?我应该坚持清除所有 Flake8 警告(以及 spaces 的混合数),还是接受警告以保持 4-space 纯度。

引用相关 PEP8 页面上的脚注:

Hanging indentation is a type-setting style where all the lines in a paragraph are indented except the first line. In the context of Python, the term is used to describe a style where the opening parenthesis of a parenthesized statement is the last non-whitespace character of the line, with subsequent lines being indented until the closing parenthesis.

# Hanging indents *may* be indented to other than 4 spaces.
foo = long_function_name(
  var_one, var_two,
  var_three, var_four)

这与您的示例不同,因为您在第一行有参数。 PEP8 指出你应该保持函数参数垂直对齐,所以 Flake8 在这里是正确的。如果这样做会违反其他 PEP8 规则,请不要担心 "maintaining 4-space purity"。

如果您真的讨厌在非 4 的倍数中使用空格,您可以切换到以下样式之一:

# More indentation included to distinguish this from the rest.
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

# Hanging indents should add a level.
foo = long_function_name(
    var_one, var_two,
    var_three, var_four)