如何编写代码以避免 pep8 W502 和 E504 问题

How to write code to avoid pep8 W502 and E504 issue

我找不到绕过 pep8 E502 和 W504 的好方法

我有这样的代码

if (foo(a, b) or 
    foo1(c, d) or
    foo2(e, f) ) and
    foo3(g, h):

如果我这样写,就会有人抱怨我违反了“W504 在二元运算符之后换行”。

但是,如果我在二元运算符后添加换行符,我就会抱怨我违反了“E502 括号之间的反斜杠是多余的

如果我不能把它们写成一行,我应该怎么写代码?

你"supposed"要写

if (foo(a, b)
    or foo1(c, d)
    or foo2(e, f)
    and foo3(g, h)):

在下一行的开头使用二元运算符。

甚至 PEP-8 对此也有些动摇;它建议新代码的预运算符中断,但接受 post-运算符中断,只要它在整个文件中是一致的。

(我更喜欢 post-operator breaks。对我来说,它更强烈地暗示表达式将继续到下一行。因此,我只使用 --ignore W504。)