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这个函数,其内部的处理通常会复杂一些。

你可能感兴趣的:(Python高阶(持续更新中...))