聊聊python中not 與 is None的區(qū)別
原因:
list 獲得的數(shù)據(jù)為空: 顯示值為 [ ]
不同的判斷--- is None
----not
兩者結(jié)果不一樣分析:
總之:
not 判斷的是內(nèi)容,而is None則涉及到這個(gè) list 或 dict 是否聲明并定義
補(bǔ)充:關(guān)于Python not 及is None的有趣現(xiàn)象(兩者的區(qū)別)
筆者小白最近在刷題的過(guò)程中,遇到一個(gè)有趣的現(xiàn)象。
在使用 if A is None 來(lái)實(shí)現(xiàn)判斷條件的時(shí)候,最后程序沒(méi)有通過(guò)。這里的A代表之前定義的list類型的數(shù)據(jù)。最用改成if not A才通過(guò)。
那么到底判斷A為空兩者有什么區(qū)別呢。
筆者小白發(fā)現(xiàn)A為空時(shí),not A 就是True,但是這并不代表該對(duì)象沒(méi)有定義,也不代表該對(duì)象沒(méi)有其它的屬性。它只是代表A中元素為空,僅此而已。
如果要看對(duì)象是否有定義,就要使用 is None來(lái)判斷。
補(bǔ)充:Python的if條件語(yǔ)句中的 X is None 和 not X的區(qū)別
在算法題和日常工作中總會(huì)遇到條件語(yǔ)句中有is None 和 not 出現(xiàn),總是分不清它們的用途,今天在這里做一個(gè)總結(jié)。
if X is None和if not X的具體用法
Python中not是一個(gè)邏輯判斷詞,結(jié)合布爾類型True和False來(lái)運(yùn)用,not True就是False,not False就是True??戳艘恍┚W(wǎng)上資料后,可以把not X 理解為
if x is false, then True, else False
Python中 is None就是判斷對(duì)象是否有定義
舉個(gè)例子
list1 = [] list2 = None print("\n--測(cè)試1--\n") if list1 is None: print("is None的用法,輸出list1的內(nèi)容:\t") print(list1) print("------分割線------") if not list1: print("not的用法,輸出list1的內(nèi)容:\t") print(list1) print("\n--測(cè)試2--\n") if list2 is None: print("is None的用法,輸出list2的內(nèi)容:\t") print(list2) print("------分割線------") if not list2: print("not的用法,輸出list2的內(nèi)容:\t") print(list2)
結(jié)果如圖:
可以看到:
list1是[],此時(shí)只有not判斷有輸出,因?yàn)閘ist1雖然是空,但是是有定義的,所以此時(shí)None的判斷不成立,所以沒(méi)有輸出,而list1中是空的,not空為真,所以輸出這個(gè)list1;
list2是None,此時(shí)兩個(gè)條件判斷都有輸出,因?yàn)?None == None,所以有輸出,not None 為True 所以也會(huì)有輸出。
總結(jié)一下:
在python中 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元組()都相當(dāng)于False;
想使用if not x的話,一定要搞清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元組()時(shí)對(duì)你的判斷沒(méi)有影響才行。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Windows 7下Python Web環(huán)境搭建圖文教程
這篇文章主要為大家詳細(xì)介紹了Windows 7下Python Web環(huán)境搭建圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03一文帶你解密Python迭代器的實(shí)現(xiàn)原理
這篇文章主要為大家詳細(xì)介紹了Python中迭代器的實(shí)現(xiàn)原理,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下2022-12-12python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)(二)決策樹
這篇文章主要介紹了python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)第二篇,決策樹的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Python面向?qū)ο蟪绦蛟O(shè)計(jì)多繼承和多態(tài)用法示例
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)多繼承和多態(tài)用法,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中多繼承、多態(tài)的概念、原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-04-04Python復(fù)合賦值運(yùn)算符由淺入深實(shí)例探究
這篇文章主要為大家介紹了Python復(fù)合賦值運(yùn)算符由淺入深實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01解決Python3.8運(yùn)行tornado項(xiàng)目報(bào)NotImplementedError錯(cuò)誤
這篇文章主要介紹了Python3.8運(yùn)行tornado項(xiàng)目報(bào)NotImplementedError錯(cuò)誤,本文給大家分享解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09解決pymongo連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)certificate verify failed:certific
這篇文章主要介紹了解決pymongo連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)certificate verify failed:certificate has expired問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Python實(shí)現(xiàn)對(duì)相同數(shù)據(jù)分箱的小技巧分享
這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)對(duì)相同數(shù)據(jù)分箱的小技巧,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01