2017-07-24 57 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只是一個指導方針,並不是一個要求。專注於編寫健壯且易於理解的代碼。