ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 对象的比较

2021-08-22 14:33:17  阅读:159  来源: 互联网

标签:__ 10 变量 python 对象 操作符 print 比较


'==' VS 'is'

== 和 is 是 Python 中对象比较常用的两种方式。简单来说,'==' 操作符比较对象之间的值是否相等,比如下面的例子,表示比较变量 a 和 b 所指向的值是否相等。

a == b

而 'is' 操作符比较的是对象的身份标识是否相等,即它们是否是同一个对象,是否指向同一个内存地址。

a = 10
b = 10

print(a==b)
# 输出
True

print(id(a))
# 输出
140730501919280

print(id(b))
# 输出
140730501919280

print(a is b)
# 输出
True

这里,首先 Python 会为 10 这个值开辟一块内存,然后变量 a 和 b 同时指向这块内存区域,即 a 和 b 都是指向 10 这个变量,因此 a 和 b 的值相等,id 也相等,a == b和a is b都返回 True。

在实际工作中,当我们比较变量时,使用'=='的次数会比'is'多得多,因为我们一般更关心两个变量的值,而不是它们内部的存储地址。但是,当我们比较一个变量与一个单例(singleton)时,通常会使用'is'。一个典型的例子,就是检查一个变量是否为 None:

if a is None:

if a is not None:

比较操作符'is'的速度效率,通常要优于'=='。因为'is'操作符不能被重载,这样,Python 就不需要去寻找程序中是否有其他地方重载了比较操作符,并去调用。执行比较操作符'is',就仅仅是比较两个变量的 ID 而已。

但是'=='操作符却不同,执行a == b相当于是去执行a.eq(b),而 Python 大部分的数据类型都会去重载__eq__这个函数,其内部的处理通常会复杂一些。比如,对于列表,__eq__函数会去遍历列表中的元素,比较它们的顺序和值是否相等。

标签:__,10,变量,python,对象,操作符,print,比较
来源: https://www.cnblogs.com/yilin520/p/15067290.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有