python空值判斷方式(if xxx和if xxx is None的區(qū)別及說明)
if xxx 和if xxx is None的區(qū)別
一、 if xxx
None,’’,0,[],{},() ,False都被判斷為空值(not xxx等價)
如下代碼輸出所示,
if __name__ == '__main__': ? ? print("---not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False)---") ? ? print(not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False))
輸出
---not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False)---
True
if xxx
如下代碼輸出所示,
if __name__ == '__main__': ? ? print("---output a,b---") ? ? a = [] ? ? b = None ? ? print("a=[]") ? ? print("b=None") ? ? print("--- if x") ? ? if a: ? ? ? ? print("a") ? ? else: ? ? ? ? print("None") ? ? if b: ? ? ? ? print("b") ? ? else: ? ? ? ? print("None")
輸出
---output a,b---
a=[]
b=None
--- if x
None
None
結(jié)論:
將空列表換成上述的其他空類型,結(jié)果一樣。
如果需要過濾None值和空對象時(如[],{},''等),可使用這種寫法
二、 if xxx is None
該寫法可將None和其他空值對象區(qū)分開來
如下代碼輸出所示:
if __name__ == '__main__': ? ? a = [] ? ? b = None ? ? print("a=[]") ? ? print("b=None") ? ? print("--- is None") ? ? if a is None: ? ? ? ? print("None") ? ? else: ? ? ? ? print("a") ? ? if b is None: ? ? ? ? print("None") ? ? else: ? ? ? ? print("b")
輸出
---output a,b---
a=[]
b=None
--- is None
a
None
結(jié)論:
需要區(qū)分[],{},'',()等空值對象與None的區(qū)別時時可使用這種寫法
貼下簡單的測試代碼
if __name__ == '__main__': ? ? print("---not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False)---") ? ? print(not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False)) ? ? print("---output a,b---") ? ? a = [] ? ? b = None ? ? print("a=[]") ? ? print("b=None") ? ? print("--- if x") ? ? if a: ? ? ? ? print("a") ? ? else: ? ? ? ? print("None") ? ? if b: ? ? ? ? print("b") ? ? else: ? ? ? ? print("None") ? ? print("--- is None") ? ? if a is None: ? ? ? ? print("None") ? ? else: ? ? ? ? print("a") ? ? if b is None: ? ? ? ? print("None") ? ? else: ? ? ? ? print("b") ? ? print("--- not") ? ? if not a: ? ? ? ? print("None") ? ? else: ? ? ? ? print("a") ? ? if not b: ? ? ? ? print("None") ? ? else: ? ? ? ? print("b") ? ? print("--- is not None") ? ? if a is not None: ? ? ? ? print("a") ? ? else: ? ? ? ? print("None") ? ? if b is not None: ? ? ? ? print("B") ? ? else: ? ? ? ? print("None")
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python中ThreadPoolExecutor線程池和ProcessPoolExecutor進(jìn)程池
這篇文章主要介紹了python中ThreadPoolExecutor線程池和ProcessPoolExecutor進(jìn)程池,文章圍繞主題相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-06-06使用Python中OpenCV和深度學(xué)習(xí)進(jìn)行全面嵌套邊緣檢測
這篇文章主要介紹了使用Python中OpenCV和深度學(xué)習(xí)進(jìn)行全面嵌套邊緣檢測,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05python解決報錯ImportError: Bad git executable.問題
這篇文章主要介紹了python解決報錯ImportError: Bad git executable.問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06全網(wǎng)最新用python實(shí)現(xiàn)各種文件類型轉(zhuǎn)換的方法
這篇文章主要介紹了用python實(shí)現(xiàn)各種文件類型轉(zhuǎn)換的方法,包括word轉(zhuǎn)pdf,excel轉(zhuǎn)pdf,ppt轉(zhuǎn)pdf,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Python DataFrame.groupby()聚合函數(shù),分組級運(yùn)算
python的pandas包提供的數(shù)據(jù)聚合與分組運(yùn)算功能很強(qiáng)大,也很靈活,本文就帶領(lǐng)大家一起來了解groupby技術(shù),感興趣的朋友跟隨小編一起來看下2018-09-09Python操作JSON實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)交換
這篇文章主要介紹了Python操作JSON實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)交換,JSON的全稱是 JavaScript Object Notation,是一種輕量級的數(shù)據(jù)交換格式,關(guān)于JSON的更多相關(guān)內(nèi)容感興趣的小伙伴可以參考一下2022-06-06