附加空间以对齐延续线

时间:2018-10-18 12:36:37

标签: python pep8 flake8

我已经开始使用Flake8来检查我的python代码,但是一个错误/警告它总是让我感到很难解决的是“连续行缩进/缩进”。

Flake8希望我的延续线与起始括号完全对齐。因此,在下面的示例中,Flake8不喜欢前两个,而是喜欢第三个:(»= 4个空格,·=单个空格)

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个空格块和单个空格混合在一起。
我在PEP8中只能找到一个示例中的注释:# Hanging indents *may* be indented to other than 4 spaces.

这是否意味着皱眉?我应该坚持清除所有Flake8警告(以及空格的混合数量),还是应该保留这些警告以保持4个空格的纯净度。

1 个答案:

答案 0 :(得分:2)

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

  

悬挂式缩进是一种类型设置样式,其中段落中除第一行外的所有行均进行缩进。在Python上下文中,该术语用于描述一种样式,其中带括号的语句的左括号是该行的最后一个非空白字符,其后的行会缩进,直到右括号为止。

# 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规则,请不必担心“保持4空间纯度”。

如果您真的讨厌空格不是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)