详解Python 对象比较:is与==

  • Post category:Python

在 Python 中,”==” 和 “is” 是两种不同的比较操作,它们比较的对象是不同的。

“==” 操作符比较对象的值是否相等,也就是比较二者的内容是否相等。

“is” 操作符比较对象的身份标识是否相同,也就是比较二者在内存中的地址是否相同。它不仅要判断值是否相等,还要判断两个对象是否是同一对象。

下面我们以两个确定的对象为例来说明 “==” 和 “is” 的操作方法。

示例一:

a = [1, 2, 3]
b = a

print(a == b) # True
print(a is b) # True

在此例中,我们声明一个列表 a,它包括三个数字。然后我们将 a 赋值给 b,使得 b 和 a 指向同一个列表。比较 a 和 b 的值和身份标识时都返回 True,因为它们两个指向的是同一个对象。

示例二:

a = [1, 2, 3]
b = [1, 2, 3]

print(a == b) # True
print(a is b) # False

在此例中,我们有两个不同的列表 a 和 b,但它们的内容完全相同。比较 a 和 b 的值时返回 True,但比较它们的身份标识返回 False,因为它们指向的其实是两个不同的对象。

总结一下,在大多数情况下我们都应该使用 “==” 操作符来比较对象是否相等,而不是使用 “is” 操作符。但是在一些特殊情况下,我们需要确保两个对象是同一个对象时才使用 “is” 操作符,比如判断一个变量是否为 None,或者判断两个变量是否被赋予同一份对象。

需要特别注意的是,Python 中的某些操作符可能会隐式地使用 “is” 操作符,例如 “in” 操作符和 “not in” 操作符。如果我们要比较值而不是对象的身份标识,应该使用 “==” 操作符。