2014-10-07 53 views
11

如果我沒有弄錯,PEP8對三元運算符沒有任何說明。 那麼你有什麼建議,我應該如何用三元條件操作符來寫長列?如何在python中縮進三元條件運算符以符合PEP8?

some_variable = some_very_long_value \ 
       if very_long_condition_holds \ 
       else very_long_condition_doesnt_hold 

some_variable = some_very_long_value \ 
        if very_long_condition_holds \ 
         else very_long_condition_doesnt_hold 

你更喜歡哪一個最?

+0

第一個更易讀。順便說一句,有一個pep8程序,將檢查您的python文件。 https://pypi.python.org/pypi/pep8 – 2014-10-07 10:07:49

+3

(1)PEP 8更喜歡用反斜線括住幾行的表達式。 (2)如果條件和值太長,你總是不能使用操作員。 – delnan 2014-10-07 10:10:41

+0

不幸的是,對某些東西征求意見的問題並不是Stack Overflow的主題。還有其他幾個地方,這些問題可能會得到更好的接待;你應該試試那裏。 – Veedrac 2014-10-07 10:12:53

回答

10

都沒有。對於任何長線來說,通常最好使用括號來允許換行。有不同的意見,是否應該這樣做:

some_variable = (some_very_long_value 
       if very_long_condition_holds 
       else very_long_condition_doesnt_hold) 

或本:

some_variable = (
    some_very_long_value 
    if very_long_condition_holds 
    else very_long_condition_doesnt_hold) 

,甚至這樣的:

some_variable = (
    some_very_long_value 
    if very_long_condition_holds 
    else very_long_condition_doesnt_hold 
) 

個人而言,我更喜歡第三;谷歌內部風格是第二位。

1
some_variable = some_very_long_value\ 
       if very_long_condition_holds\ 
       else othervalue 

當面對這樣的問題時更喜歡大括號。 這裏檢查最大線路長度。 http://legacy.python.org/dev/peps/pep-0008/#maximum-line-length

+0

大括號?或者你的意思是括號? – 2014-10-07 10:33:27

+1

@ PM2Ring'SyntaxError:不是機會' – frnhr 2015-04-11 21:36:54

1
some_variable = (some_very_long_value 
       if very_long_condition_holds else 
       very_long_condition_doesnt_hold) 
  • 使用括號而不是反斜槓線路延續,每PEP8。
  • 通過將if ... else構造放在其自己的行上,該表達式的三個部分之間有明顯的分隔:then表達式,條件部分和else表達式。 thenelse表達式被統一格式化,並與if...else構造分開。