2017-07-24 59 views
1

我今天不得不无关括号添加到while条件,以避免PEP8投诉:PEP8和多,​​而条件

while not found and not something and \ 
    (time_left is None or time_left > 0): 
    (one, two, three, four) = self.gimme(timeout=time_left) 

我的解决办法:

while (not found and not something and 
     (time_left is None or time_left > 0)): 
    (one, two, three, four) = self.gimme(timeout=time_left) 

如果我改变了第2行缩进,它抱怨过度缩进或缺少缩进,因为每个缩进都与W在一起,而在8的右侧。

我很困扰,添加无关parens来满足pep8,为了提高可读性提高,违背了一般原则。

任何想法?我错过了更好的解决方案吗?

+2

PEP-8建议在反斜杠延续中使用圆括号,因为后者更脆弱:反斜杠杀死它后会出现单个杂散空间。我同意额外的圆括号会增加一点视觉混乱,但您已经习惯了。 ;)括号内的多余空格是合法的,我同意如果你的IDE或linter抱怨它很烦人; OTOH,如果继续代码缩进一个缩进级别(通常为4个空格),我认为它看起来更整齐一些。 –

+2

最初我已经离开了一个答案,但我开始认为这会导致很多有见解的答案,而没有一个真正具体的“最佳”方法来做到这一点,因为这取决于品味。 – Makoto

+0

Python有多种编码风格。他们中的很多人都支持[YAPF](https://github.com/google/yapf#formatting-style),尽管我不认为它支持喜欢继续使用括号。 –

回答

3

我更喜欢在条件语句之后打破长条线以提高可读性。例如:

while (
    not found and 
    not something and 
    (time_left is None or time_left > 9) 
): 
    (one, two, three, four) = self.gimme(timeout=time_left) 

我认为这是非常可读的,至少可以满足我的pep8 codestyle检查。

+1

+1,如果你正在使用grumpy-ole-pylint,它会在条件内建议一个额外的缩进,以便在代码块中以可视方式将它与代码分开 –

+0

我倾向于用Perl来做这样的事情,尽管我更喜欢(那里)在开始时具有布尔运算符,并具有用于视觉清晰度的适当缩进。当然,它对Python的重要空白不起作用。 –

0

我认为最好的解决办法是做任何你(和你的团队,如果适用)认为是最可读的解决方案。 PEP8只是一个指导方针,并不是一个要求。专注于编写健壮且易于理解的代码。