Python的等号运算符有什么区别?

Python提供了两个非常相似的用于比较的等号运算符:

  • 双等号(==),也称为等号运算符
  • is关键字,也称为身份运算符

虽然它们相似,但双等号(==)和is关键字用于不同的比较目的,并产生不同的结果。

两者之间的主要区别在于,is关键字检查引用相等性,而双等号(==)运算符检查值相等性。换句话说,如果两个变量都引用内存中的同一个对象(即身份),is将返回True,而双等号运算符将在两个对象具有相同值时求值为True

以下是一些示例,以消除任何困惑:

a = [1, 2, 3]
b = a
c = [x for x in a]

print([
  a == b, # True
  a is b, # True
  a == c, # True
  a is c  # False
])

x = 'hi'
y = x
z = 'HI'.lower()

print([
  x == y, # True
  x is y, # True
  x == z, # True
  x is z  # False
])