PEP8-E129和E127 / E128之间的矛盾

Jon*_*aus 6 python coding-style pep8

根据PEP标准,缩进应该在二进制运算符之前。此外,多行条件应放在括号内,以避免在换行符前使用反斜杠。这两个约定导致以下情况

if (long_condition_1
    or long_condition_2):
    do_some_function()
Run Code Online (Sandbox Code Playgroud)

该代码反过来E129 visually indented line with same indent as next logical line在PEP8中中断。但是,第二行必须缩进四个空格,否则,对于缩进或缩进过的行,它会破坏E128或E127。

如何格式化上面的一种,使其符合PEP8标准?

mde*_*dew 8

这应该可以正常工作

if (long_condition_1 or
       long_condition_2):
    do_some_function()
Run Code Online (Sandbox Code Playgroud)

  • 有效,但看起来很可怕。 (7认同)

Rya*_*eer 5

这个问题的答案随着时间而改变。由于 PEP8 的立场发生变化,W503 现在被广泛认为PEP8 背道而驰。

PEP8现在说可以在之前或之后中断,但要在本地保持一致。

对于较新的代码,首选 Knuth 风格(我认为这是指在运算符之前中断)。

if (
    long_condition_1
    or long_condition_2
    or (
        long_condition_3
        and long_condition4
    )
):
    do_some_function()
Run Code Online (Sandbox Code Playgroud)