📜  Python对象比较:“is”与“==”(1)

📅  最后修改于: 2023-12-03 15:04:39.127000             🧑  作者: Mango

Python对象比较:“is”与“==”

在Python中,可以使用“is”和“==”运算符来比较对象。这两个运算符看似相同,但在比较对象时却有截然不同的作用。

==运算符

“==”运算符用于比较两个对象的值是否相等。当两个对象的值相等时,返回True,否则返回False。例如:

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

在上面的例子中,虽然a和b是不同的对象,但它们的值是相等的,所以a == b返回True。

is运算符

“is”运算符用于比较两个对象是否为同一个对象(即它们是否指向相同的内存地址)。当两个对象指向同一个内存地址时,返回True,否则返回False。例如:

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

在上面的例子中,a和b指向同一个内存地址,所以a is b返回True。

区别

那么“is”和“==”有何区别呢?简单来说,==比较的是两个对象的值是否相等,而is比较的是两个对象的id是否相等。具体如下:

  • ==比较的是值(Object identity):
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # True
  • is比较的是id:
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)  # False

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

需要注意的是,虽然大多数情况下,具有相等的值的两个对象的id也会相等,但这并非一定如此。例如:

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

在上面的例子中,a和b具有相等的值,但因为它们是不同的对象,所以a is b返回False。

总结
  • “==”比较的是对象的值,用于判断两个对象的内容是否相等。
  • “is”比较的是对象的id,用于判断两个对象是否为同一个对象。
  • 在比较对象时,需要根据具体的需求选择适当的运算符。