Python高阶(持续更新中...)

对象的比较

== 操作符比较对象之间的值是否相等
在 Python 中,每个对象的身份标识,都能通过函数 id(object) 获得。因此,'is'操作符,相当于比较对象之间的 ID 是否相等

a = 10
b = 10
 
a == b
True
 
id(a)
4427562448
 
id(b)
4427562448
 
a is b
True

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

注意,如果上面的代码改成 a=257,b=257,a is b为 False,并且 id(a) 和 id(b) 也不相等
a is b 为True的情况,只适用于 -5 到 256 范围内的数字
出于对性能优化的考虑,Python 内部会对 -5 到 256 的整型维持一个数组,起到一个缓存的作用。这样,每次你试图创建一个 -5 到 256 范围内的整型数字时,Python 都会从这个数组中返回相对应的引用,而不是重新开辟一块新的内存空间。

'=='操作符,执行a == b相当于是去执行a.eq(b),而 Python 大部分的数据类型都会去重载eq这个函数,其内部的处理通常会复杂一些。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、基本概念1.多表查询就必须消除两张表之间存在的笛卡尔积,使用一个条件语句消除笛卡尔积,可以使用别名表达。①要求...
    Mongy阅读 3,196评论 0 1
  • 今日事今日毕清单: 早起 护肤 健康补给品 复盘(时间/财务/思想) 60S练习 【认知总结】 ️事件缘由:跟以前...
    杨云珠_珠珠云Jade阅读 1,333评论 0 0
  • 所谓学习,有时可以这样解释----就是忽然之间以一种全新的方式,重新整理了一件你整整一生中早已理解的事情。所有伟大...
    Andylee阅读 2,806评论 0 3
  • 《清新小冠花》 春光淡荡忽如许,清丽向阳醉眼帘。 随风飘摇舞翠影,高歌不住斜阳晚。 天逢其时谓翘楚,草蔓含露鲜玉冠...
    曦微w行走在路上阅读 5,434评论 3 6

友情链接更多精彩内容