Python中is同一性运算符和==相等运算符区别
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同一性运算符和==相等运算符区别相关推荐
- python中变量,Python中的变量、数据类型、运算符
Python第四课 Python中的变量.数据类型.运算符 Hello,小伙伴们,今天我们来聊一聊Python里面的变量.数据类型.运算符. 一. 变量:什么是变量呢? 我们来看这样一个例子:李四在银 ...
- python while if 区别_对python中for、if、while的区别与比较方法
如下所示: if应用举例: #if 若条件成立,只执行一次 #if 条件:如果条件成立,执行条件后的代码块内容,不成立,直接跳过代码块 #判断如果年龄age小于18,输出未成年 #=一个等号表示赋值的 ...
- Python中threading的join和setDaemon的区别及用法 例子
Python中threading的join和setDaemon的区别及用法 Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别. 1.join ...
- python的none是什么-python中的null与none有什么区别
Python中none与null的区别有:none可以看作是一个具体的值用来初始化变量,而null表示空不是一个值,并且没有与任何一个值绑定并且存储空间也没有存储值 Python中所有的操作都是针对对 ...
- Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho
Python基础学习-Python中最常见括号().[].{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho ...
- python中_x、__x、__xx__的区别
python中_x.__x.__xx__的区别 注释:该文章是从英文文档翻译过来的,具体代码可以参考原网址,这里只是简单解释一下他们的区别,方便大家迅速了解.原地址:difference-betwee ...
- Python中NaN、nan和NAN的区别及使用方法
Python中NaN.nan和NAN的区别及使用方法 Python中的NaN(Not a Number)是一个特殊的浮点数值,用于表示非数值型计算结果或无限大的运算结果,常用于科学计算.数据分析等领域 ...
- Python学习笔记(一)1.Python中end=和sep=的用法与区别。
一.Python中end=和sep=的用法与区别: python中常用到的end=和sep=两种参数用法相似,一个是python输出结尾,一个是python输出分割. end: 默认是换行,表示两个字 ...
- Python中最常见括号()、[]、{}的区别
原文:https://www.cnblogs.com/xuxiaolu/p/4726064.html Python中最常见括号().[].{}的区别 在Python语言中最常见的括号有三种,分别是:小 ...
最新文章
- js获取宽度设置thickbox百分比
- poj2186(强连通分量分解)
- python.freelycode.com-通过OpenCV和Python进行文本倾斜校正
- ajax无刷新留言板远吗,基于jquery实现ajax无刷新评论
- python的类与模块_Python类与模块属性
- windows和linux系统下测试端口连通性的命令
- 源码共享,希望一起互相学习
- 如何在JavaScript中将字符串的首字母大写?
- python窗口大小动态变化_python – 如何让tkinter画布动态调整窗口宽度?
- 突破某书新版登录流程逆向分析
- acrobat支持日文粘贴复制
- LINTCODE——吹气球
- Python OpenCV 图片滑块验证码自动识别方案分析与自动化识别方案实现 图片相似度对比 OpenCV如何找到图片中的正方形并进行标记?
- 基于IjkMediaPlayer的播放器
- STM32F411 Discovery学习笔记(四)串口
- LVS部署准备工作-DRBD的部署
- 关于RTX51-Tiny,一种适用于51的RTOS
- 常用的100个PHP类库资源和技巧
- phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接--解决方法
- linux 虚拟机桥接上网方式
热门文章
- Maven项目Spring Boot启动
- Centos 7 冗余备份磁盘配置介绍
- 2017年9月11日 梁勇 java教材 编程练习题 第二章 2.15 键盘 读取两个点的坐标值(小数),控制台输出两点间距离。...
- 深入学习jQuery描述文本内容的3个方法
- 刚刚、几秒前,时间格式化函数
- 多节点CDN缓存加速系统wdcdn2.4版本发布(20111213)
- 现代内存编号解读(转)
- sendmail服务器配置过程中出现的一些错误和解决办法
- Linux中的文件复制:cp和scp
- 理清那么多个OO(面向对象)