美文网首页Python与数据分析
Python 中的‘==’与‘is’运算符的区别

Python 中的‘==’与‘is’运算符的区别

作者: 葉_Kyle | 来源:发表于2018-09-13 23:23 被阅读0次

今天在练习时碰到一道题:

a = [1,2,3]
b = a
c = [1,2,3]
#分别用’==‘和’is'对‘a'和'c’进行运算,会得到什么结果?

测试一下

>>>print (a == b)
True
>>>print (a is b)
True
>>>print (a == c)
True
>>>print (a is c)
False

这是为什么呢?

原来,‘==’是比较运算符,判断两边的值是否相等,而‘is'是恒等(有的地方叫同一性运算符),判断的是对象间的唯一身份标识(id),通过下面的代码进行验证:

>>> print (id(a))
2062234790664
>>> print (id(b))
2062234790664
>>> print (id(c))
2062234790600

从中也可以学到将一个变量赋的值给另一个变量时,是将第一个变量的id赋给第二个变量。
问题又来了,是所有的运算对象都是这个结果吗?

>>> a = 1 #a和b为数值类型
>>> b = 1
>>> a is b
True
>>> a = 'fish' #a和b为字符串类型
>>> b = 'fish'
>>> a is b
True
>>> id(a)
>>> id(b)
>>> a = (1,2,3) #a和b为元组类型
>>> b = (1,2,3)
>>> a is b
False
>>> a = [1,2,3] #a和b为list类型
>>> b = [1,2,3]
>>> a is b
False
>>> a = {'fish':1,'cat':2} #a和b为dict类型
>>> b = {'fish':1,'cat':2}
>>> a is b
False
>>> a = set([1,2,3])#a和b为set类型
>>> b = set([1,2,3])
>>> a is b
False

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

相关文章

网友评论

    本文标题:Python 中的‘==’与‘is’运算符的区别

    本文链接:https://www.haomeiwen.com/subject/pkxngftx.html