Python程式區分字串==運算子和__eq__()方法


在Python中,比較運算子(==)和equals()方法在處理字串時以不同的方式使用。為了區分Python中的==運算子和equals()方法,我們必須將它們與字串比較一起使用。當我們在資料分析和機器學習中處理字串時,字串比較會廣泛發生。在本文中,我們將瞭解如何在使用字串時區分==運算子和equals()方法。

Python中的==運算子

==是一個比較運算子,用於比較兩個字串值。當字串的值相等時,它返回True;當字串的值不相等時,它返回False。即使字串儲存在不同的記憶體位置,它也會返回true。它僅比較字串的值是否相等。

示例

在下面的示例中,我們定義了兩個字串值str1str2,並使用相同的字串值初始化它們。當我們使用==運算子比較字串str1str2時,它返回true,因為兩個字串的值相等。

str1 = "Hello World"
str2 = "Hello World"
if str1 == str2:
   print("The strings are equal.")
else:
   print("The strings are not equal.")

輸出

The strings are equal.

Python中的__eq__()方法

Python中的__eq__方法用於定義如何比較類的物件的相等性。__eq__方法接受兩個引數:self(==運算子左側的物件)和other(==運算子右側的物件)。__eq__方法始終返回布林值(True或False)。如果它返回除布林值以外的其他值,則會導致TypeError。

示例

在下面的示例中,我們建立了一個名為Person的類,它有兩個屬性,即nameage。然後,我們在類中定義__eq__()方法來比較person物件的nameage屬性。最後,建立了person類的兩個例項,即p1p2,並使用==運算子進行比較。

class Person:
   def __init__(self, name, age):
      self.name = name
      self.age = age

   def __eq__(self, other):
      if isinstance(other, Person):
         return self.name == other.name and self.age == other.age
      return False

p1 = Person("John", 30)
p2 = Person("John", 30)
if p1 == p2:
   print("p1 and p2 are equal")

輸出

p1 and p2 are equal

==和__eq__方法之間的區別

==運算子

__eq__方法

==是python中比較兩個物件的值時的預設行為。

__eq__方法需要在類中顯式定義。

==運算子可用於比較不同資料型別的物件。

__eq__方法只能比較相同型別的物件

它在自定義方面靈活性不大。

__eq__方法可以針對特定型別的比較進行自定義。

它不能被繼承,並且應該為每個類顯式定義。

__eq__方法可以從父類繼承。

結論

在本文中,我們討論了==運算子和__eq__方法在Python中的工作原理。==運算子比較字串而不檢視字串的記憶體位置。__eq__方法在類中定義,用於比較兩個物件。本文還討論了==運算子和__eq__方法之間的差異。

更新於: 2023年4月17日

151次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.