python 中 is 和==的区别?

Python014

python 中 is 和==的区别?,第1张

is:比较的是两个对象的id值是否相等,也就是比较两对象是否为同一个实例对象,是否指向同一个内存地址

==:比较的两个对象的内容/值是否相等,默认会调用对象的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