python判斷是空的例項分享

2022-10-04 14:00:43 字數 2124 閱讀 7930

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

if a is none:

do something.else:

do the other thing.

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

none

false

0,0.0,0l

'',(),,{}

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

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

>>> id(nosjakpnlpkpne)

1795884240

>>> none == 0

false

>>>&nbssjakpnlpkpp;none == ''

false

>>> a = none

>>> id(a)

1795884240

>>> a == none

true

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

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

>>> a = ''    #這裡僅以空字串為例,其他空值同樣適用

>>> if a:

...        print 'a is not empty'

...    else:

...        print 'a is a empty string'

'a is a empty string.'

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

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

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

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

>>>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 =&nbsjakpnlpkpsp;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內容擴充套件:

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

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

我都都給你du講講:

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

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

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

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

網友分享:

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

def test():

return none

if test():www.cppcns.com

print true

else:

print false

你不容錯過 Python判斷是空的例項

在實際的工作當中,我們難免要與空值打交道,相信不少初學者都會寫出下面的 if a is none do something.else do the other thing.這樣寫看起來不錯,但實際上會有問題。一般來講,python中會把下面幾種情況當做空值來處理 none false 0,0.0,0...

判斷是空物件還是空陣列

方法一 利用josn.stringify if json.stringify res.data else方法二objeck.keys objeck.keys 方法會返回乙個由給定物件的自身可列舉屬性組成的陣列,陣列中屬性名的排列順序和使用 for in 迴圈遍歷該物件時返回的順序一致,該方法屬於 e...

python例項(判斷)

題目 輸入某年某月某日,判斷這一天是這一年的第幾天?coding utf 8 year int raw input 請輸入年份 month int raw input 請輸入月份 day int raw input 請輸入天 month1 0 31 60 91 121 152 182 213 244...