2019独角兽企业重金招聘Python工程师标准>>>

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

==比较对象的value(值)

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

>>> a = 'cheesezh'
>>> b = 'cheesezh'
>>> a == b
True

is比较对象间的唯一身份标识

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。如下例子:

>>> 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,这是因为x、y和z的值是相同的。至于最后一个为什么是False,比较三个对象的id会发现z的id不一样。

在数值型和字符串型的情况下,及tuple,list,dict或set型的情况下的比较,如下:

>>> 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

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

转载于:https://my.oschina.net/jennerlo/blog/3010742

Python中is同一性运算符和==相等运算符区别相关推荐

  1. python中变量,Python中的变量、数据类型、运算符

    Python第四课 Python中的变量.数据类型.运算符 Hello,小伙伴们,今天我们来聊一聊Python里面的变量.数据类型.运算符. 一. 变量:什么是变量呢? 我们来看这样一个例子:李四在银 ...

  2. python while if 区别_对python中for、if、while的区别与比较方法

    如下所示: if应用举例: #if 若条件成立,只执行一次 #if 条件:如果条件成立,执行条件后的代码块内容,不成立,直接跳过代码块 #判断如果年龄age小于18,输出未成年 #=一个等号表示赋值的 ...

  3. Python中threading的join和setDaemon的区别及用法 例子

    Python中threading的join和setDaemon的区别及用法 Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别. 1.join ...

  4. python的none是什么-python中的null与none有什么区别

    Python中none与null的区别有:none可以看作是一个具体的值用来初始化变量,而null表示空不是一个值,并且没有与任何一个值绑定并且存储空间也没有存储值 Python中所有的操作都是针对对 ...

  5. Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho

    Python基础学习-Python中最常见括号().[].{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho ...

  6. python中_x、__x、__xx__的区别

    python中_x.__x.__xx__的区别 注释:该文章是从英文文档翻译过来的,具体代码可以参考原网址,这里只是简单解释一下他们的区别,方便大家迅速了解.原地址:difference-betwee ...

  7. Python中NaN、nan和NAN的区别及使用方法

    Python中NaN.nan和NAN的区别及使用方法 Python中的NaN(Not a Number)是一个特殊的浮点数值,用于表示非数值型计算结果或无限大的运算结果,常用于科学计算.数据分析等领域 ...

  8. Python学习笔记(一)1.Python中end=和sep=的用法与区别。

    一.Python中end=和sep=的用法与区别: python中常用到的end=和sep=两种参数用法相似,一个是python输出结尾,一个是python输出分割. end: 默认是换行,表示两个字 ...

  9. Python中最常见括号()、[]、{}的区别

    原文:https://www.cnblogs.com/xuxiaolu/p/4726064.html Python中最常见括号().[].{}的区别 在Python语言中最常见的括号有三种,分别是:小 ...

最新文章

  1. js获取宽度设置thickbox百分比
  2. poj2186(强连通分量分解)
  3. python.freelycode.com-通过OpenCV和Python进行文本倾斜校正
  4. ajax无刷新留言板远吗,基于jquery实现ajax无刷新评论
  5. python的类与模块_Python类与模块属性
  6. windows和linux系统下测试端口连通性的命令
  7. 源码共享,希望一起互相学习
  8. 如何在JavaScript中将字符串的首字母大写?
  9. python窗口大小动态变化_python – 如何让tkinter画布动态调整窗口宽度?
  10. 突破某书新版登录流程逆向分析
  11. acrobat支持日文粘贴复制
  12. LINTCODE——吹气球
  13. Python OpenCV 图片滑块验证码自动识别方案分析与自动化识别方案实现 图片相似度对比 OpenCV如何找到图片中的正方形并进行标记?
  14. 基于IjkMediaPlayer的播放器
  15. STM32F411 Discovery学习笔记(四)串口
  16. LVS部署准备工作-DRBD的部署
  17. 关于RTX51-Tiny,一种适用于51的RTOS
  18. 常用的100个PHP类库资源和技巧
  19. phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接--解决方法
  20. linux 虚拟机桥接上网方式

热门文章

  1. Maven项目Spring Boot启动
  2. Centos 7 冗余备份磁盘配置介绍
  3. 2017年9月11日 梁勇 java教材 编程练习题 第二章 2.15 键盘 读取两个点的坐标值(小数),控制台输出两点间距离。...
  4. 深入学习jQuery描述文本内容的3个方法
  5. 刚刚、几秒前,时间格式化函数
  6. 多节点CDN缓存加速系统wdcdn2.4版本发布(20111213)
  7. 现代内存编号解读(转)
  8. sendmail服务器配置过程中出现的一些错误和解决办法
  9. Linux中的文件复制:cp和scp
  10. 理清那么多个OO(面向对象)