1. 程式人生 > 程式設計 >python判斷是空的例項分享

python判斷是空的例項分享

在實際的工作當中,我們難免要與空值打交道,相信不少初學者都會寫出下面的程式碼:

ifaisNone:
dosomething.else:
dotheotherthing.

這樣寫看起來不錯,但實際上會有問題。一般來講,Python中會把下面幾種情況當做空值來處理:

None
False
0,0.0,0L
'',(),[],{}

其中None的特殊之處在於,它既不是數值0,也不是某個資料結構的空值,它本身就是一個空值物件。它的型別是NoneType,它遵循單

例模式,也就是說,在同一名稱空間下的所有None其實質上都是同一個空值物件。

>>>id(None)
1795884240
>>>None==0
False
>>>None==''
False
>>>a=None
>>>id(a)
1795884240
>>>a==None
True

上面的判斷顯然不符合我們的期望:只有當a被顯示賦值為None的情況下,a==None才為True。

那麼,對於Python中更為廣義的None值判斷,我們應該怎麼做呢?

>>>a=''#這裡僅以空字串為例,其他空值同樣適用
>>>ifa:
...print'aisnotempty'
...else:
...print'aisaemptystring'
'aisaemptystring.'

可以看出,if a的判斷方式得出了我們想要的結果,那麼if a的判斷方式究竟是一個怎樣的過程呢?

if a會首先去呼叫a的__nonzero__()去判斷a是否為空,並返回True/False,若一個物件沒有定義__nonzero__(),就去呼叫它的__len__()來

進行判斷(這裡返回值為0代表空),若某一物件沒有定義以上兩種方法,則if a的結果永遠為True

接下來驗證一下上面的說法:

>>>classA(object):
...def__nonzero__(self):
...print'runningonthe__nonzero__'
...returnTrue
>>>classB(object):
...def__len__(self):
...print'runningonthe__len__'
...returnFalse
>>>a,b=A(),B()
>>>ifa:
...print'Yep'
...else:
...print'Nop'
runningonthe__nonzero__
Yep
>>>ifb:
...print'Yep'
...else:
...print'Nop'
runningonthe__len__
Nop

內容擴充套件:

如何判斷python函式返回的是否是空

我不知道你這裡的空是什bai麼意思 是None還是‘'

我都都給你du講講:

None是一zhi個空dao的物件,代表什麼都沒有。

而'',是一個字串物件,代表一個空的字串

如果返回值是None,你就用 if None:判斷

如果返回‘',你就用if len(‘') == 0:判斷

網友分享:

可以直接bai把函式放到if後面當du作條件,如果為空的話zhi判斷結果dao是false,例如:

deftest():
returnNone

iftest():
printTrue
else:
printFalse

到此這篇關於python判斷是空的例項分享的文章就介紹到這了,更多相關python怎麼判斷是空的內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!