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

Python 专栏收录该内容
29 篇文章 0 订阅

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 基础教程》第三版。

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值