日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python观察日志(part5)--判断对象是否为空

發(fā)布時間:2023/12/19 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python观察日志(part5)--判断对象是否为空 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python之判斷對象是否為空

判斷對象是否為None

  • 要研究這個問題,首先我們要弄清楚,啥是None.

①None表示空值,它是一個特殊 Python 對象, None的類型是NoneType.

②在一個解釋器進程中只有一個 None 對象存在。

我們用下面這兩段代碼,驗證一下這些說法:

In [68]: type(None) Out[68]: NoneType In [67]: None is None Out[67]: True In [69]: None == None Out[69]: True

看到上面這段代碼,我突然就像扯到另一個問題。即:is和==的區(qū)別

  • is和==的區(qū)別

==是比較操作符,用來比較判斷兩個對象的value(值)是否相等。

is是同一性運算符,這個運算符比較兩個對象的是id是否相同,可以檢查兩個變量是否引用了同一個對象。

舉個例子,驗證一下以上的說法:

In [80]: a = [1, 2] In [81]: b = [1, 2]In [82]: a == b Out[82]: TrueIn [83]: a is b Out[83]: FalseIn [84]: id(a) Out[84]: 743791852360In [85]: id(b) Out[85]: 743759644488
  • 好了,我們回到剛才的話題,如何判斷一個變量所關(guān)聯(lián)的對象是否為None

我們已經(jīng)知道了,is可以判斷兩個變量是否關(guān)聯(lián)同一個對象(即變量id是否相同),也知道了在一個解釋器進程中只有一個 None 對象,則我們可以推斷出一個變量x只有關(guān)聯(lián)None對象,才能實現(xiàn)x is None為True

我們敲一段代碼驗證一下,以上言論:

list01 = [None, False, '', {}, [], 0, ()]for item in list01:print('第1種:', item is None, '第2種:', not (item is None))

控制臺輸出:

第1種: True 第2種: False 第1種: False 第2種: True 第1種: False 第2種: True 第1種: False 第2種: True 第1種: False 第2種: True 第1種: False 第2種: True 第1種: False 第2種: True

判斷對象是否為空

啥叫空?反正我的理解是空字典{}空列表 []空字符串 ''空元祖 () 都叫空。

現(xiàn)在我有一個python邏輯運算符not,它相當(dāng)于數(shù)學(xué)中的非運算,也就是說not False得到的結(jié)果應(yīng)該是True,那么如果我們not {}或 not []會發(fā)生什么情況呢?

list01 = [None, False, '', {}, [], 0, ()]for item in list01:print(not item)

控制臺輸出:

True True True True True True True

我們看到以上結(jié)果都為Ture.

我們再向各個列表元祖字典字符串中加入數(shù)據(jù):

list01 = ['e', {"w":1}, [3], 1, (5)]for item in list01:print(not item)

控制臺輸出:

False False False False False

嗯,結(jié)果都變成False了。

難道說…空字符串、空列表、空字典、空元祖可以代表False???

做一個實驗:

list01 = ['', {}, [], ()]for item in list01:if item:print('{} is OK!!'.format(item))else:print('{} is not good'.format(item))

控制臺輸出:

is not good {} is not good [] is not good () is not good

好吧,在if之后的確代起到了False的作用。但具體為啥可以代表False, 沒搞清楚.


現(xiàn)在熬夜腦子有點不好使。問題留下,以后再繼續(xù)研究!!!

總結(jié)

以上是生活随笔為你收集整理的python观察日志(part5)--判断对象是否为空的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。