2012-10-08 32 views

回答

13

要Pythonic是使用Python結構和數據結構與乾淨,可讀的習慣用法。

來源:What is Pythonic?

簡單地說,第一是很容易,第二閱讀 - 它具有較小的樣板,並且比第一開銷少。任何Python程序員都可以查看第一個,並且看到有一個被檢查的東西列表,它看起來更像普通英語而不是第二個。試想,如果你擴展的事情的清單對被檢查 - 第一個例子會讀到這樣:

if var in ['string one', 'string two', 'string three']: 
    # If var is one of string one, string two, or string three. 
    do_something() 

而第二個聲音聽起來象:

if var == 'stringone' or var == 'stringtwo' or var == stringthree: 
    # If var is equal to stringone, or var is equal to stringtwo, or var is equal to stringthree. 
    dosomething() 
+0

謝謝!這是有道理的。 :) –

5

很容易擴展第一種方法更弦:

if var in ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']: 

第二種方法迅速成爲笨拙:

if var == 'one' or var == 'two' or var == 'three' or ...: 

此外,第一種方法,可以用來測試函數調用的返回值,只計算一次:

if bigCalculation() in ['one', 'two', 'three']: 

第二種方法必須重新評估每一次通話,從而導致更糟糕的表現(特別是如果該呼叫在計算上昂貴)。

if bigCalculation() == 'one' or bigCalculation() == 'two' or ...: 
+0

謝謝你,你的回答在實踐中是有道理的,它向我展示了第一種方法更有效率。雖然它不直接回答方法1比方法2更加Pythonic的問題。無論如何,謝謝!您的答案與其他答案結合在一起可以更好地閱讀和更好地理解兩種方法(Pythonic意義上的另一種方法,以及實際意義上的您)。 –

+0

@Rahul Sharma:我認爲它清楚地描述了爲什麼方法1比另一個更加Pythonic。 – martineau

相關問題