首頁 >後端開發 >Python教學 >Python None 比較:什麼時候應該使用「is」與「==」?

Python None 比較:什麼時候應該使用「is」與「==」?

Susan Sarandon
Susan Sarandon原創
2024-11-11 14:01:03749瀏覽

Python None Comparison: When Should I Use

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

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