==:比较的两个对象的内容/值是否相等,默认会调用对象的eq()方法。
简单来说,python中的is与is not运算符可判断两个对象是否为同一对象。若为同一个对象,则对象1 is 对象2为True 。
反正,若非同一个对象,则对象1 is not 对象2为True
要理解Python中的is和is not运算符,首先需要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。
is和==(is not和!=)都是对对象进行比较判断作用的。
但对对象比较判断的内容并不相同。
拿is和==为例,
==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:
>>>a = 'iplaypython.com'
>>>b = 'iplaypython.com'
>>>a == b
True
is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个列表间的比较,你就会明白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
可看出前三个例子都是True,而最后一个是False。
x、y和z的值是相同的,所以前两个是True没有问题。
至于最后一个为什么是False,看看三个对象的id分别是什么就会明白了。
==比较操作符:用来比较两个对象是否相等,value做为判断因素;
is同一性运算符:比较判断两个对象是否相同,id做为判断因素。
同理,
!=比较操作符:用来比较两个对象是否不等,value做为判断因素;
is not同一性运算符:比较判断两个对象是否不同,id做为判断因素。
Python中的对象包含三要素:id、type、value其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
is判断的是a对象是否就是b对象,是通过id来判断的
==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
如下代码或许可以帮助你理解。
>>>a = 1
>>>b = 1.0
>>>a is b
False
>>>a == b
True
>>>id(a)
12777000
>>>id(b)
14986000
>>>a = 1
>>>b = 1
>>>a is b
True
>>>a == b
True
>>>id(a)
12777000
>>>id(b)
12777000