在 python 中缩进函数调用的正确方法

Correct way to indent function calls in python

假设我像这样声明一些变量(我认为缩进太多):

httpd = Server(
    (
        "",
        conf.port
    ),
    Handler
)

我可以这样做,但它不是很可读:

httpd = Server(("", conf.port), Handler)

或者像这样(中间的方式):

httpd = Server(
    ("", conf.port),
    Handler
)

有些人甚至这样做(我认为这是最糟糕的):

httpd = Server(
    ("",
        conf.port),
    Handler)

问题

是否有任何规则/指南应将这些变体中的哪些与多少参数一起使用?有区别

var = function(with="with", many="many",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
              argu="argu", ments="ments",
)

var = function(argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", ments="ments",
              argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", 
              argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", 
              argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", 
              argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", 
              argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", 
              argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", 
              argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", 
              argu="argu", ments="ments", argu="argu", ments="ments", argu="argu", 
)

根据 PEP8,行长应为 79 个字符。然后,你应该换行比这更长的行。

虽然这只是一个风格指南,而不是规则或要求。所以这真的取决于你。如果您使用 IDE,例如pycharm/atom/vscode。您可以设置行的最大长度并使用自动格式化来自动换行。 IMO,手动太麻烦了。

至于这些的指南,这里有一个:https://www.python.org/dev/peps/pep-0008/#indentation

对于您的具体情况,我建议使用:

httpd = Server(
    ("", conf.port),
    Handler
)

并将 ("", conf.port) 放在自己的行上,以区别于 Handler。

嗯,缩进是 Python 独特的编程语言功能之一。但我不会说有任何正确或正确的方法来调用具有多个参数的函数。大多数时候我使用带参数的函数调用,如果参数超过 3 个,我会使用这种格式:

someValue = myFunction(
    first_arg=0, 
    second_arg=5,
    third_arg=10,
    fourth_arg=15,
    fifth_arg=20
)

或者我只使用普通的:

someValue = myFunction(first_arg=0)

但这完全取决于你。任何一种格式都可以,没有 'Pythonic' 方法可以做到这一点。