Python “__eq__” vs “is” vs “==”的区别

Python “eq” vs “is” vs “==”的区别

在Python中,“eq”、“is”和“==”运算符用于比较对象的相等性。eq方法用于检查相同类的对象是否相等,或者用于自定义比较函数。“is”运算符用于检查两个对象的内存位置,而“==”运算符仅检查两个对象的值是否相等。本文将讨论这三个运算符的区别及其用法。

方法 功能 语法
eq 检查两个相同类的对象之间的值是否相等 def __eq__(self,other)
is 检查两个对象是否具有相同的内存位置 a is b
== 检查两个对象的值是否相等 a==b

eq()方法

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

is 运算符

is 运算符检查两个对象的内存位置。如果两个对象指向相同的内存位置,则 is 运算符返回 true,否则返回 false。is 运算符不用于检查运算符的值是否相等。

示例

在下面的示例中,我们创建了一个数组并将其赋值给另一个变量。借助 is 运算符,我们可以检查变量 a 和 b 是否引用相同的内存位置。

a = [1, 2, 3]
b = a
print(a is b)

输出

True

==运算符

==运算符用于检查比较的操作数或对象的值是否相等。如果两个操作数具有相同的值,则返回true,否则返回false。==运算符不会检查两个对象的内存位置。

示例

在下面的示例中,创建了包含相同值的两个数组。==运算符检查两个列表是否相等。

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True

输出

True

结论

在这篇文章中,我们讨论了Python中eq、is和==运算符之间的区别。eq方法用于比较相同类别的对象的值是否相等,is运算符用于检查比较的对象的内存位置,而==运算符用于检查两个对象的值是否相等。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程