該系列博文原文出自jeff knupp所著的編寫地道的python(writing idiomatic python)一書, 原書版權歸原做者全部.
python
關於if語句
函數
避免直接與True, False或None去比較. 在python中,如下幾種狀況都會被當作False:
codeNone對象
False內存
數字類型的0it
空list或dictio
0值或者當__len__或__nonzero返回Falseclass
其餘狀況都會當作True, 你能夠重寫e中的兩個內置函數來自定義如何纔會返回True或者False.變量
你能夠直接這樣寫 if foo: 而不用這樣寫 if foo == True:重構
這樣寫的好處在於通過將來的重構以後, foo可能變成了一個int類型的值並且永遠不會 == True, 直接寫 if foo: 就不用再修改原先的函數了.
這裏有個點要注意區分一下,就是==和is的區別, ==意思是值是否相等,它調用的是類內部的_eq, is意思是他們是不是同一個對象,即兩個變量是否指向的是同一段內存, 有些地方is表現的像==同樣,可是這是不可靠的.
注意有些狀況是必須與None去比較的,好比
def insert_data(self, position=None): if position is None:
此處因爲0也是一個有效值因此不能直接寫 if position:
還有一種狀況是若是與None去比較必須使用is或者is not,不要用==. (PEP8規定)