python观察日志(part5)--判断对象是否为空
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巅峰赛和排位赛哪个难(巅峰最新章节)
- 下一篇: Flash如何制作可随意开动并能旋转的坦