1.问题由来
在学习python各个数据类型的内存地址时,发现内存地址的存储比想象中的要复杂一点,IDE的缓存有时也会让人摸不到头脑,于是大家就总结了一下 id()、is、== 这三个的具体含义。
2.方案
1.先查查各自定义
2.再去实践验证是否属实
3.汇总结果
3.过程
1.id()函数
id(object)返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。两个生命期不重叠的对象可能具有相同的id() 值(如下图情况)。
Python 实现细节: 这是对象在内存中的地址。
(python官网内置函数中的解释)
内存地址采用十六进制,IDE为了方便人们使用,将十六进制的内存地址替换成了十进制的整数。
2.is运算符
运算符 is 和is not 用于检测对象的标识号:当且仅当 x 和 y 是同一对象时 x is y 为真。 一个对象的标识号可使用 id() 函数来确定。x is not y 会产生相反的逻辑值。
由于id(a) 和 id(b) 是两个不同的函数,is判断的是id(a)的标识值和id(b)的标识值不是a的标识值和b的标识值,因此,第二个会输入 False。
3.== 等于
== 运算符判断两个运算对象的值是否相同。
这里 == 判断的是 id(a)的值 和 id(b)的值 是否相同。
4.总结
a | b | id(a) | id(b) | |
值 | 1 | 1 | 140........12 | 140........12 |
is | print(a is b) True | print(id(a)is id(b)) False | ||
== | print(a == b) True | print(id(a)== id(b)) True |