博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中is同一性运算符和==相等运算符区别
阅读量:6983 次
发布时间:2019-06-27

本文共 1246 字,大约阅读时间需要 4 分钟。

hot3.png

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

==比较对象的value(值)

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

>>> a = 'cheesezh'>>> b = 'cheesezh'>>> a == bTrue

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

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

>>> x = y = [4,5,6]>>> z = [4,5,6]>>> x == yTrue>>> x == zTrue>>> x is yTrue>>> x is zFalse>>>>>> 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 bTrue>>> id(a)14318944>>> id(b)14318944>>> a = 'cheesezh' #a和b为字符串类型>>> b = 'cheesezh'>>> a is bTrue>>> id(a)42111872>>> id(b)42111872>>> a = (1,2,3) #a和b为元组类型>>> b = (1,2,3)>>> a is bFalse>>> id(a)15001280>>> id(b)14790408>>> a = [1,2,3] #a和b为list类型>>> b = [1,2,3]>>> a is bFalse>>> id(a)42091624>>> id(b)42082016>>> a = {'cheese':1,'zh':2} #a和b为dict类型>>> b = {'cheese':1,'zh':2}>>> a is bFalse>>> id(a)42101616>>> id(b)42098736>>> a = set([1,2,3])#a和b为set类型>>> b = set([1,2,3])>>> a is bFalse>>> 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

你可能感兴趣的文章
STM32中断名词
查看>>
[转]Java数组扩容算法及Java对它的应用
查看>>
01.Java安装及环境变量的设置
查看>>
十四、curator recipes之DistributedAtomicLong
查看>>
模板中的名字查找问题
查看>>
StringUtils工具类用法
查看>>
QListView的子项的ViewMode
查看>>
erlang的erl文件的编码方式
查看>>
Kosaraju算法解决强连通问题
查看>>
做一个完整的Java Web项目需要掌握的技能
查看>>
win7下安装docker的一些坑
查看>>
Java:正则表达式
查看>>
tensorflow
查看>>
mysql分表的3种方法
查看>>
TableControl大小变化
查看>>
返回脚本所在目录
查看>>
[LeetCode] No. 9 Palindrome Number
查看>>
(转)GCT之逻辑经验总结(拿来主义)
查看>>
虚拟继承中子类和父类的构造函数顺序1
查看>>
js错误: Unexpected number in JSON at position 2792 value里面有双引号怎么解决
查看>>