Python 函数末尾的 ): 缩进是否遵循 pep8 样式?

Python does an indentation of the ): at the end of a function follow the pep8 style?

函数声明示例:

def foo(
        long_parameter_name_1, long_parameter_name_2 = "default value var 2",
        long_parameter_name_3 = "default value var 3", long_parameter_name_4 = "default value var 4"
        ):

上述函数声明方法作为以下函数定义的修改版本是否遵循 pep8 样式指南以处理超过 80 个字符的行的参数?我发现它对于带有默认值的长行更具可读性,但是 pep8 风格指南没有指定这个条件。

def foo(long_parameter_name_1, long_parameter_name_2 = "default value var 2",
        long_parameter_name_3 = "default value var 3", long_parameter_name_ = "default value var 4"):

PEP-8 允许两者;请参阅 discussion of indentation 的最后一节。但是,它还建议在关键字参数中 = 周围 没有 空格,并且不需要对参数进行太多缩进。缩进应该匹配,但如果第一个参数在新行上,则不需要缩进超过开头 (.

两者都

def foo(
    long_parameter_name_1, long_parameter_name_2="default value var 2",
    long_parameter_name_3="default value var 3", long_parameter_name_4="default value var 4"
    ):

def foo(
    long_parameter_name_1, long_parameter_name_2="default value var 2",
    long_parameter_name_3="default value var 3", long_parameter_name_4="default value var 4"):

可以接受。


不过,我会更进一步,并建议您在任何一种情况下都将自己限制为每行一个参数。

def foo(
    long_parameter_name_1,
    long_parameter_name_2="default value var 2",
    long_parameter_name_3="default value var 3",
    long_parameter_name_4="default value var 4"
    ):

def foo(
    long_parameter_name_1,
    long_parameter_name_2="default value var 2",
    long_parameter_name_3="default value var 3",
    long_parameter_name_4="default value var 4"):

但首选第一个。 (在第一种情况下,您可能还希望在最后一个参数之后包含一个可选的尾随 ,,以在您从不添加或删除参数的情况下简化差异。)