Python中运算符 is 和 == 的区别

版权声明: https://blog.csdn.net/luoyayun361/article/details/82831115

Python 中有个很有趣的运算符–is,其作用看似和==是一样的,但实际上并非如此。

通过一个示例来看一下两者的去区别:

>>> a = b = [1,2,3]
>>> c = [1,2,3]
>>> a == b
True
>>> a == c
True
>>> a is b
True
>>> a is c
False

前几个示例没啥问题,但是最后一个a is c 返回 False,为什么会这样呢?因为 is 检查的是两个对象是否相同,而不是相等,变量 x 和 y 指向同一个列表,而c 指向另一个列表,虽然两个的值都是一样,但是并不是同一个对象,所以这里 a is c 返回 False

再来看个示例,可以更加说明这一点:

>>> a = [1,2,3]
>>> b = [2,1]
>>> a is not b
True
>>> del a[2]
>>> a
[1, 2]
>>> b.reverse()
>>> b
[1, 2]
>>> a==b
True
>>> a is b
False

从上例可以看到,a 和 b 一开始就不是同一个列表值,所以 a is not b自然返回的是 False,经过调整将a 和 b 的值修改成一样,这时候 a==b返回 True,而 a is b 依然返回False。
很显然这两个列表相等,但并不相同。
总之,==是用来检查两个对象是否相等,而 is 用来检查两个对象是否相同。

注意:不要将 is 用于数字或字符串这种不可变的基本值。鉴于 Python内部处理这些对象的方式,这种做法的接口将会不可预测。

本书知识点来源于《Python 基础教程》第三版。

猜你喜欢

转载自blog.csdn.net/luoyayun361/article/details/82831115