首页 > 解决方案 > Python 是否缩进 ): 在函数末尾遵循 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_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"):

标签: pythonpep8

解决方案


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

任何一个

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"):

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


推荐阅读