如何在python中打破long语句

Jos*_*uis 18 python

我在python中有一行代码,如下所示:

with long_name_function(p) as a, other_long_name_function():
Run Code Online (Sandbox Code Playgroud)

我希望在多行中打破它,因为太长了,我可以使用反斜杠,但它们被认为是一种不好的做法.我也可以使用contextlib.nested,但不推荐使用,还有其他选择吗?

jam*_*lak 22

这忽略了问题的前提,但我实际上建议在这种情况下使用反斜杠:

with really_really_long_name_function(p) as f1, \
        other_really_really_long_name_function() as f2:
    pass
Run Code Online (Sandbox Code Playgroud)

正如@JonClements所说,在这种情况下你不能使用括号或逗号,没有其他选择,所以反斜杠是要走的路,代码看起来很干净IMO.

  • 是的 - 因为括号不能被使用(虽然不能想到一个正当合理的理由)然后是的,我认为反斜杠很容易在这种情况下最具可读性和实用性.... (4认同)

Mar*_*ers 12

如果要避免使用反斜杠,可以为长名称添加别名:

lnf = long_name_function
olnf = other_long_name_function
with lnf(p) as a, olnf():
    # ...
Run Code Online (Sandbox Code Playgroud)

或者您可以嵌套语句:

with long_name_function(p) as a:
    with other_long_name_function():
        pass
Run Code Online (Sandbox Code Playgroud)

希望使用contextlib.nested(); 有几个问题直接导致其弃用.例如,早期的上下文管理器不会涉及嵌套中后续上下文管理器的问题.

  • 太糟糕的括号在这里不能很好地工作. (3认同)