前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中的==与is关键字,是一样的吗

Python中的==与is关键字,是一样的吗

作者头像
fanjy
发布2022-06-04 09:44:38
9160
发布2022-06-04 09:44:38
举报
文章被收录于专栏:完美Excel完美Excel

标签:Python

双等号==运算符和is关键字是Python中比较对象的常用语句,本文将通过几个例子了解它们之间的区别。

双等号==运算符

当赋值给被比较对象的值相等时,双等号==运算符返回True。==运算符在比较对象时不匹配两个对象的内存位置,因此,即使两个对象的内存位置不同但值相同,双等号运算符也将返回True。简而言之,==运算符比较对象是否相等。让我们来看一个例子。

下面定义了三个列表:car1,car2和car3。

car1= ["Honda", "Toyota", "Ford"]

car2= ["Ford", "Toyota"]

car3= ["Honda", "Toyota", "Ford"]

现在,使用==运算符来比较列表car1和car2,由于这两个列表包含不同的项,比较将返回False。

if car1 == car2:

print("值相等")

else:

print("值不相等")

结果如下图1所示。

图1

如果比较列表car1和car3:

if car1 == car3:

print("值相等")

else:

print("值不相等")

由于这次比较中的两个列表具有完全相同的项数和类型,因此==运算符返回True。

图2

is关键字

is关键字通过匹配两个或多个对象的内存位置来比较它们的身份。即使两个对象包含相同的项,如果对象不指向相同的内存位置,is关键字也将返回False。

下面的脚本使用is关键字比较car1和car3列表。回想一下,这两个列表包含相同的项。

if car1 is car3:

print("值相等")

else:

print("值不相等")

结果如下图3所示。

图3

上面的输出显示,尽管car1和car3列表以相同的顺序包含相同的项,但比较结果返回False。为什么返回False?这是因为列表car1和car3的存储位置不同。

通过将对象传递给id()方法,可以检查对象的内存位置。下面的脚本打印car1和car3列表的内存位置。

图4

图4中的输出显示,列表对象的内存位置确实不同。

将car1列表对象赋值给car3列表对象,而不是像我们第一次定义列表时那样对列表中的项目进行硬编码,这将使car3对象指向与car1对象相同的内存位置。

car3= car1

检查这两个列表的内存位置,如下图5所示。

图5

从上图5的输出可以看出,现在car1和car3列表都指向同一个内存位置。

现在,使用is关键字再次比较car1和car3列表。

图6

小结

双等号==运算符匹配相等,并比较两个对象的值,而不考虑它们的内存位置。而is关键字通过比较对象的内存位置来匹配对象的标识。

注:本文学习整理自wellsr.com,供有兴趣的朋友参考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档