首頁 >後端開發 >Python教學 >Python 無比較:您應該使用'is”還是'==”?

Python 無比較:您應該使用'is”還是'==”?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-13 16:38:021047瀏覽

Python None Comparisons: Should You Use

Python 無比較:應該使用「is」還是 ==?

在 Python 中,將變數與使用 == 時 None ,而使用 is 時不會發出警告。兩種語法都有效,但通常首選使用 my_var is None。

為什麼 None 檢查首選「is」?

is 和 is 之間的主要區別==在於他們的目的。 == 檢查相等性,而 is 檢查物件同一性。在將變數與 None 進行比較的情況下,我們想要確定該變數是否為 None 對象,而不僅僅是與其等效的對象。

None 是 Python 中唯一的對象,這意味著只有其中一個例子。當您使用 my_var is None 時,您正在檢查 my_var 和 None 是否是相同物件。此檢查比使用 my_var == None 更具體、更可靠。

平等與身分

為了說明差異,請考慮自訂類別Negator:

class Negator(object):
    def __eq__(self, other):
        return not other

如果您建立Negator 的實例並將其與None 進行比較,您將get:

thing = Negator()
print(thing == None)  # True
print(thing is None)  # False

thing == None 傳回True,因為 Negator 類別重寫了 eq 方法,以便在與自身以外的任何其他值進行比較時始終傳回 True。然而,thing is None 會傳回 False,因為這兩個物件不是同一個物件。

結論

對於 None 檢查,一般首選使用 my_var is None 來確保您專門檢查 None 物件。當您想要檢查相等性時可以使用 == ,但請記住,在處理重寫比較方法的自訂類別時,這可能不可靠。

以上是Python 無比較:您應該使用'is”還是'==”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn