is 和 == 的区别

Python的对象比较指 == 和 is的区别

  • is比较 的是两个实例对象是不是同一个对象,也就是说这两个对象的地址,通过id()函数可以获取,是不是相同
  • == 比较的是两个实例对象的值是否相等,比较的是内存中存放的内容,可以不是同一个对象,只要内容一样就可以了
a = ['x','y']
b = a
# a的引用复制给了b,其实相当于a和b同时指向了一个对象,即内存地址是一样的
b is a # true
id(a) == id(b) # true

当然内容也是相同的
a == b

# b通过切片操作获得了和a一样的内容,但是它和a不是同一个对象
b = a[:]
b is a # false
b == a # true
id(a) == id(b) # False

通常我们关心的不是内存地址,而是对象的内容.因此Python中我们使用==的频率比is多很多.
那什么时候用is呢?is 和 == 相比有一个巨大的优势:它计算很快,因为它不重载,少了函数调用开销而直接比较两个整数的id.而a==b则等同于是a.eq(b).重载了对应的方法.

is常用的地方

和None值进行比较

a is None or a is not None

总结:

  1. is 比较的是两个对象的内存地址,也就是通过id()函数求得得值,是否指向同一个地址
    2.==比较的是两个对象的内容是否相等,值是否相等.
    3.小整数池[-5,256]在全局解释器范围内被放入了缓冲提供重复使用.
    4.is运算符比==运算符运算效率高.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为什么有时写代码 is 和 == 的结果相同,有的不相同呢? 分析: 官方文档中说 is 表示的是对象标示符(ob...
    Freedom_pxc阅读 564评论 2 1
  • Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么。 在讲is和==这两种运...
    05ea6e176933阅读 935评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,199评论 0 13
  • 各位观众朋友们,在正式开始文章之前,你们有必要了解一下我的过去。 高考完蛋之后,我随便报了个二本院校。念了两年,就...
    二狗子的花花世界阅读 461评论 0 0
  • 什么,想复习一下之前的课程, 来点我啊 更多文章 官网上有这样一段课程引导,很好,你想看,那我就拿过来给你看看: ...
    醋留香阅读 1,027评论 3 4