python判斷是空的實(shí)例分享
在實(shí)際的工作當(dāng)中,我們難免要與空值打交道,相信不少初學(xué)者都會(huì)寫出下面的代碼:
if a is None: do something.else: do the other thing.
這樣寫看起來(lái)不錯(cuò),但實(shí)際上會(huì)有問(wèn)題。一般來(lái)講,Python中會(huì)把下面幾種情況當(dāng)做空值來(lái)處理:
None
False
0,0.0,0L
'',(),[],{}
其中None的特殊之處在于,它既不是數(shù)值0,也不是某個(gè)數(shù)據(jù)結(jié)構(gòu)的空值,它本身就是一個(gè)空值對(duì)象。它的類型是NoneType,它遵循單
例模式,也就是說(shuō),在同一命名空間下的所有None其實(shí)質(zhì)上都是同一個(gè)空值對(duì)象。
>>> id(None) 1795884240 >>> None == 0 False >>> None == '' False >>> a = None >>> id(a) 1795884240 >>> a == None True
上面的判斷顯然不符合我們的期望:只有當(dāng)a被顯示賦值為None的情況下,a==None才為True。
那么,對(duì)于Python中更為廣義的None值判斷,我們應(yīng)該怎么做呢?
>>> a = '' #這里僅以空字符串為例,其他空值同樣適用 >>> if a: ... print 'a is not empty' ... else: ... print 'a is a empty string' 'a is a empty string.'
可以看出,if a的判斷方式得出了我們想要的結(jié)果,那么if a的判斷方式究竟是一個(gè)怎樣的過(guò)程呢?
if a會(huì)首先去調(diào)用a的__nonzero__()去判斷a是否為空,并返回True/False,若一個(gè)對(duì)象沒(méi)有定義__nonzero__(),就去調(diào)用它的__len__()來(lái)
進(jìn)行判斷(這里返回值為0代表空),若某一對(duì)象沒(méi)有定義以上兩種方法,則if a的結(jié)果永遠(yuǎn)為True
接下來(lái)驗(yàn)證一下上面的說(shuō)法:
>>>class A(object): ... def __nonzero__(self): ... print 'running on the __nonzero__' ... return True >>>class B(object): ... def __len__(self): ... print 'running on the __len__' ... return False >>> a, b = A(), B() >>>if a: ... print 'Yep' ... else: ... print 'Nop' running on the __nonzero__ Yep >>>if b: ... print 'Yep' ... else: ... print 'Nop' running on the __len__ Nop
內(nèi)容擴(kuò)展:
如何判斷python函數(shù)返回的是否是空
我不知道你這里的空是什bai么意思 是None還是‘'
我都都給你du講講:
None是一zhi個(gè)空dao的對(duì)象,代表什么都沒(méi)有。
而'',是一個(gè)字符串對(duì)象,代表一個(gè)空的字符串
如果返回值是None,你就用 if None:判斷
如果返回‘',你就用if len(‘') == 0:判斷
網(wǎng)友分享:
可以直接bai把函數(shù)放到if后面當(dāng)du作條件,如果為空的話zhi判斷結(jié)果dao是false,例如:
def test(): return None if test(): print True else: print False
到此這篇關(guān)于python判斷是空的實(shí)例分享的文章就介紹到這了,更多相關(guān)python怎么判斷是空的內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用裝飾器和線程限制函數(shù)執(zhí)行時(shí)間的方法
這篇文章主要介紹了python使用裝飾器和線程限制函數(shù)執(zhí)行時(shí)間的方法,主要涉及timelimited函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
Python Django 添加首頁(yè)尾頁(yè)上一頁(yè)下一頁(yè)代碼實(shí)例
這篇文章主要介紹了Python Django 添加首頁(yè)尾頁(yè)上一頁(yè)下一頁(yè)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
python編程scrapy簡(jiǎn)單代碼實(shí)現(xiàn)搜狗圖片下載器
這篇文章主要為大家介紹了使用python scrapy簡(jiǎn)單代碼實(shí)現(xiàn)搜狗圖片下載器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
pytorch關(guān)于Tensor的數(shù)據(jù)類型說(shuō)明
這篇文章主要介紹了pytorch關(guān)于Tensor的數(shù)據(jù)類型說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
numpy數(shù)組坐標(biāo)軸問(wèn)題解決
本文主要介紹了numpy數(shù)組坐標(biāo)軸問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python使用requests xpath 并開(kāi)啟多線程爬取西刺代理ip實(shí)例
這篇文章主要介紹了Python使用requests xpath 并開(kāi)啟多線程爬取西刺代理ip實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Python實(shí)現(xiàn)曲線擬合操作示例【基于numpy,scipy,matplotlib庫(kù)】
這篇文章主要介紹了Python實(shí)現(xiàn)曲線擬合操作,結(jié)合實(shí)例形式分析了Python基于numpy,scipy,matplotlib庫(kù)讀取csv數(shù)據(jù)、計(jì)算曲線擬合及圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
淺談Python中range與Numpy中arange的比較
這篇文章主要介紹了淺談Python中range與Numpy中arange的比較,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03

