Python None 比較:何時使用「is」與==
在Python 中使用None 值時,開發人員經常使用兩元個“是”和“==”進行比較。雖然這兩種方法在語法上都是有效的,但建議的選擇取決於比較的預期目的。
通常,在檢查物件身分時首選“is”,這表示兩個變數是否引用記憶體中完全相同的物件。相反,“==”檢查相等性,這可能因物件的實現而異。
考慮以下自訂類,它重寫eq 方法來定義與物件識別不同的等價性:
class Negator(object): def __eq__(self,other): return not other thing = Negator() print(thing == None) # True print(thing is None) # False
在此範例中,「= =」回傳True,因為Negator 的eq 方法會覆寫預設行為。然而,「is」傳回 False,因為這兩個變數並沒有引用同一個物件。
在處理物件標識不重要的自訂類別時,「==」是檢查相等性的適當選擇。例如,如果你想比較兩個清單的內容,你可以使用「==」:
lst = [1,2,3] lst == lst[:] # This is True since the lists are "equivalent" lst is lst[:] # This is False since they're actually different objects
相反,如果你想專門檢查兩個變數是否指向完全相同的物件記憶體中,「is ”是首選比較運算子。當使用可變對象(例如字典或列表)時,這一點尤其重要,如果它們是同一對象,則更改一個實例可能會影響另一個實例:
a = [1, 2, 3] b = a b.append(4) print(a, b) # Output: [1, 2, 3, 4], [1, 2, 3, 4] c = [1, 2, 3] d = c d is c # True (same object in memory)
以上是Python None 比較:什麼時候應該使用「is」與「==」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!