Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么。

在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。

is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪。

==比较操作符和is同一性运算符区别

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:

例1.

>>> a = 'cheesezh'

>>> b = 'cheesezh'

>>> a == b

True

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个list间的比较,你就会明白is同一性运算符的工作原理:

例2.

>>> x = y = [4,5,6]

>>> z = [4,5,6]

>>> x == y

True

>>> x == z

True

>>> x is y

True

>>> x is z

False

>>>

>>> print id(x)

3075326572

>>> print id(y)

3075326572

>>> print id(z)

3075328140

前三个例子都是True,这什么最后一个是False呢?x、y和z的值是相同的,所以前两个是True没有问题。至于最后一个为什么是False,看看三个对象的id分别是什么就会明白了。

下面再来看一个例子,例3中同一类型下的a和b的(a==b)都是为True,而(a is b)则不然。

例3.

>>> a = 1 #a和b为数值类型

>>> b = 1

>>> a is b

True

>>> id(a)

14318944

>>> id(b)

14318944

>>> a = 'cheesezh' #a和b为字符串类型

>>> b = 'cheesezh'

>>> a is b

True

>>> id(a)

42111872

>>> id(b)

42111872

>>> a = (1,2,3) #a和b为元组类型

>>> b = (1,2,3)

>>> a is b

False

>>> id(a)

15001280

>>> id(b)

14790408

>>> a = [1,2,3] #a和b为list类型

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

>>> a is b

False

>>> id(a)

42091624

>>> id(b)

42082016

>>> a = {'cheese':1,'zh':2} #a和b为dict类型

>>> b = {'cheese':1,'zh':2}

>>> a is b

False

>>> id(a)

42101616

>>> id(b)

42098736

>>> a = set([1,2,3])#a和b为set类型

>>> b = set([1,2,3])

>>> a is b

False

>>> id(a)

14819976

>>> id(b)

14822256

通过例3可看出,只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False。

pythonis啥意思-Python中is和==的区别相关推荐

  1. 列举至少五个python内置函数和使用方法_Python内置函数 next的具体使用方法 Python中seek和next区别...

    python列表本来没有next方法,为什么用iter函数生...对list用__dir__()发现没有next方法,但是用iter()生成迭代器,对该迭代next是进行迭代的方法,只有迭代器和生成器 ...

  2. python中arg,*arg,**kwarg区别

    python中arg,*arg,**kwarg区别 1. *args(*的作用很重要) 首先要搞清楚*的意思和作用,有助于理解arg,*arg,**kwarg. (*是arg的前半部分,arg是后半部 ...

  3. Python中is和==的区别以及is None

    0 前言 Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id( ...

  4. python 中 is 与 == 的区别

    在 Python 中,比较两个对象是否相等,可以用 "is" 和 "==" , is 与 == 的区别是什么呢,首先先清楚is 与 == 的概念 is 的概念: ...

  5. Python中“is”和“==”的区别

    Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将教你们两者之间的区别,以及通过几个简单地例子说明什么时候使用它们. 当我还 ...

  6. python中绝对路径的区别,理解Python中的绝对路径和相对路径

    本文介绍了Python中的绝对路劲和相对路径,分享给大家,也给自己留个笔记 1.绝对路径 os.path.abspath("文件名"): 显示的是一个文件的绝对路劲 eg: > ...

  7. Python中classmethod与staticmethod区别

    classmethod:类方法 staticmethod:静态方法 在python中,静态方法和类方法都是可以通过类对象和类对象实例访问.但是区别是: @classmethod 是一个函数修饰符,它表 ...

  8. python中 和is的区别_关于python中的is和==的区别

    在Python中,对象之间的比较.您可以使用= =或.但它们之间的区别是什么?比较两个实例对象是否完全相同,无论他们是同一个对象,以及他们是否占据相同的内存地址.莱布尼兹曾经说过:\u201C世界上没 ...

  9. Python中is和==的区别

    在Python中一切都是对象. Python中对象包含的三个基本要素,分别是:id(身份标识).type(数据类型)和value(值).对象之间比较是否相等可以用==,也可以用is. is和==都是对 ...

最新文章

  1. 如何利用深度学习知识--快速部署高速目标检测智能小车?
  2. 追踪JVM中的本地内存
  3. 转:VirtualBox虚拟机网络连接设置的四种方式
  4. linux cut列截取工具使用示例
  5. C++数组的左右旋转的实现算法(附完整源码)
  6. IDOC generation debug for One Order
  7. 比较 Excel 中两列的差异,并用箭头标识和指向匹配结果
  8. 面试题: 找出二叉树上任意两个结点的最近共同父结点。
  9. 【C++快速入门】面向对象篇
  10. 工作中那些有用的工具
  11. mybatis insert 如何返回主键
  12. python并发编程之多进程
  13. 中兴软件笔试 c语言,【中兴通讯员工笔试试题及答案】 - 面试网
  14. AD(Altium Designer)软件中原理图自制模板(图框)的妙用
  15. macbookair有没有touchbar_Touch Bar 真的好用吗?苹果全新 MacBook Pro 触控条上手体验...
  16. 苹果cmsV10仿优酷模板,最新自适应苹果cms模板
  17. MySQL - 对数据表进行“增删查改”的基础操作 - 细节狂魔
  18. redis中的save配置项
  19. LeGo-LOAM激光雷达定位算法源码阅读(二)
  20. CountDownLatch闭锁,join和yield的区别

热门文章

  1. tensorflow入门教程和底层机制简单解说——本质就是图计算,自动寻找依赖,想想spark机制就明白了...
  2. ES索引瘦身 禁用_source后需要设置field store才能获取数据 否则无法显示搜索结果...
  3. Tomcat的配置文件server.xml叙述
  4. centos6下的mysql的安装
  5. WebService:设置服务器提供SOAP1.2的服务
  6. flex tree 展开树节点
  7. 每天OnLineJudge 之 “杨辉三角 ”
  8. Java课堂测试——一维数组
  9. 潜水ow + aow + 高氧的一些points
  10. 旋转动画 rotate