根据PEP 8进行适当的换行格式化?

时间:2017-02-08 14:47:00

标签: python formatting pep8

根据PEP 8,这是可以接受的(以及我过去使用过的):

result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
)  

我的问题是,这是否也适用于函数定义,例如:

def some_function_that_takes_arguments(
    a, b, c,
    d, e, f,
):
    return a,b,c,d,e,f  

我过去所做的另一个例子:

if (this_is_one_thing
    and that_is_another_thing
):
    do_something()

我已经这样做了一段时间(为了保持一致性,我的所有行> 79 col都是这样分开的),我想知道其他人的想法是什么。

看清楚/好看吗?这是否符合PEP 8?

1 个答案:

答案 0 :(得分:2)

根据PEP8上的doc,它是。只要缩进级别为4个空格,就可以将函数声明分解为多行。

  

延续线应垂直对齐包裹的元素   在括号,括号和括号内使用Python的隐式线连接   支撑,或使用悬挂缩进[7]。当使用悬挂缩进时   应考虑以下事项;应该没有任何争论   第一行和进一步缩进应该用于清楚   将自己区分为延续线。

     

是:

# Aligned with opening delimiter. 
foo = long_function_name(var_one, var_two,
                     var_three, var_four)

# 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)

作为旁注,如果由于参数的数量而发现函数签名变长,请考虑将函数分解为更多原子单位(因此遵守干净的代码原则)。 / p>