python判斷是空的實(shí)例分享
在實(shí)際的工作當(dāng)中,我們難免要與空值打交道,相信不少初學(xué)者都會(huì)寫(xiě)出下面的代碼:
if a is None: do something.else: do the other thing.
這樣寫(xiě)看起來(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ì)象。它的類(lèi)型是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才為T(mén)rue。
那么,對(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)為T(mén)rue
接下來(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作條件,如果為空的話(huà)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 Web框架之Django框架cookie和session用法分析
這篇文章主要介紹了Python Web框架之Django框架cookie和session用法,結(jié)合實(shí)例形式分析了Django框架cookie和session的常見(jiàn)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-08-08Python數(shù)據(jù)分析之Python和Selenium爬取BOSS直聘崗位
今天教各位小伙伴怎么用Python和Selenium爬取BOSS直聘崗位,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲(chóng)和數(shù)據(jù)分析的小伙伴有很好地幫助,需要的朋友可以參考下2021-05-05python3連接kafka模塊pykafka生產(chǎn)者簡(jiǎn)單封裝代碼
今天小編就為大家分享一篇python3連接kafka模塊pykafka生產(chǎn)者簡(jiǎn)單封裝代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12在python 不同時(shí)區(qū)之間的差值與轉(zhuǎn)換方法
今天小編就為大家分享一篇在python 不同時(shí)區(qū)之間的差值與轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python cookbook(字符串與文本)在字符串的開(kāi)頭或結(jié)尾處進(jìn)行文本匹配操作
這篇文章主要介紹了Python cookbook(字符串與文本)在字符串的開(kāi)頭或結(jié)尾處進(jìn)行文本匹配操作,涉及Python使用str.startswith()和str.endswith()方法針對(duì)字符串開(kāi)始或結(jié)尾處特定文本匹配操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-04-04Python灰度變換中的分段線(xiàn)性函數(shù)專(zhuān)項(xiàng)分析實(shí)現(xiàn)
灰度變換是指根據(jù)某種目標(biāo)條件按一定變換關(guān)系逐點(diǎn)改變?cè)磮D像中每個(gè)像素灰度值的方法。目的是改善畫(huà)質(zhì),使圖像顯示效果更加清晰。圖像的灰度變換處理是圖像增強(qiáng)處理技術(shù)中的一種非?;A(chǔ)、直接的空間域圖像處理方法,也是圖像數(shù)字化軟件和圖像顯示軟件的一個(gè)重要組成部分2022-10-10