聊聊python中not 與 is None的區別

原因:

list 獲得的數據為空: 顯示值為 [ ]

不同的判斷— is None

—-not

兩者結果不一樣分析:

總之:

not 判斷的是內容,而is None則涉及到這個 list 或 dict 是否聲明並定義

補充:關於Python not 及is None的有趣現象(兩者的區別)

筆者小白最近在刷題的過程中,遇到一個有趣的現象。

在使用 if A is None 來實現判斷條件的時候,最後程序沒有通過。這裡的A代表之前定義的list類型的數據。最用改成if not A才通過。

那麼到底判斷A為空兩者有什麼區別呢。

筆者小白發現A為空時,not A 就是True,但是這並不代表該對象沒有定義,也不代表該對象沒有其它的屬性。它隻是代表A中元素為空,僅此而已。

如果要看對象是否有定義,就要使用 is None來判斷。

補充:Python的if條件語句中的 X is None 和 not X的區別

在算法題和日常工作中總會遇到條件語句中有is None 和 not 出現,總是分不清它們的用途,今天在這裡做一個總結。

if X is None和if not X的具體用法

Python中not是一個邏輯判斷詞,結合佈爾類型True和False來運用,not True就是False,not False就是True。看瞭一些網上資料後,可以把not X 理解為

if x is false, then True, else False

Python中 is None就是判斷對象是否有定義

舉個例子

list1 = []
list2 = None
print("\n--測試1--\n")
if list1 is None:
    print("is None的用法,輸出list1的內容:\t")
    print(list1)
print("------分割線------")
if not list1:
    print("not的用法,輸出list1的內容:\t")
    print(list1)
print("\n--測試2--\n")
if list2 is None:
    print("is None的用法,輸出list2的內容:\t")
    print(list2)
print("------分割線------")
if not list2:
    print("not的用法,輸出list2的內容:\t")
    print(list2)

結果如圖:

在這裡插入圖片描述

可以看到:

list1是[],此時隻有not判斷有輸出,因為list1雖然是空,但是是有定義的,所以此時None的判斷不成立,所以沒有輸出,而list1中是空的,not空為真,所以輸出這個list1;

list2是None,此時兩個條件判斷都有輸出,因為 None == None,所以有輸出,not None 為True 所以也會有輸出。

總結一下:

在python中 None, False, 空字符串””, 0, 空列表[], 空字典{}, 空元組()都相當於False;

想使用if not x的話,一定要搞清楚x等於None, False, 空字符串””, 0, 空列表[], 空字典{}, 空元組()時對你的判斷沒有影響才行。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: