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中文網其他相關文章!