运算符
is 和 == 的区别
首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:
>>> a = 'cheesezh'
>>> b = 'cheesezh'
>>> a == b
True
is也被叫做同一性运算符,这个运算符比较判断的是id是否相同。可以通过对下面几个list间的比较看出差异性:
>>> x = y = [4,5,6]
>>> z = [4,5,6]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
我们可以对x、y、z的id进行打印
>>> print id(x)
30753555
>>> print id(y)
30753555
>>> print id(z)
30753702
可以看出x和y的id是相同的,而z虽然和x、y的值相同,但是id却不同。
因此可以得知:
1、is的判断是需要对数值以及id进行比较,只要有一者不同则为False;
2、==的判断仅仅针对数值的判断。
以上仅为作者个人观点,一切以实际操作为准!
拓展:
当比较tuple,list,dict或set又会怎样呢?
参考资料: https://www.cnblogs.com/wangkun122/p/9082088.html