Python 中 is 和 == 区别

参考:

Python中is和==的区别  https://www.cnblogs.com/wangkun122/p/9082088.html


Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。

is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。

==和is同一性运算符区别

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

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

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是判断id是否相同。通过对下面几个list间的比较,你就会明白is同一性运算符的工作原理:

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

总结

==比较操作符:用来比较两个对象是否相等,value做为判断因素;
is同一性运算符:比较判断两个对象是否相同,id做为判断因素。

只有数值型和字符串型的情况下,a is b才为True,(此时,a和b指向同一地址)

当a和b是tuple,list,dict或set型时,a is b为False (因为tuple、list/dict/set在内存中的地址是不一样的)


 

猜你喜欢

转载自blog.csdn.net/bl128ve900/article/details/94721127