我已经开始使用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个空格的纯净度。
答案 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)