为了账号安全,请及时绑定邮箱和手机立即绑定

python中的id()函数和is运算符

python中的id()函数和is运算符

泛舟湖上清波郎朗 2023-07-18 16:43:46
id(5) is id(5)  #returned False id(5) == id(5)  #returned True如果操作数指向同一个对象,is 运算符返回 true。这里它指向同一个对象(即 5)。但在这里,它返回为 False。这背后的原因是什么?
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

首先,CPython 缓存较小的int值,因此相同的对象始终用于5.


id(5)但是,返回一个很大的 int值(例如,id(5) == 4431761200)。该值不会被缓存,因此两次调用可能会id(5)或可能不会生成表示该值的相同对象。在表达式id(5) is id(5)和中id(5) == id(5),如果未缓存大对象,则必然有两个不同的对象,因为这两个对象都必须处于活动状态,直到is或==完成其比较。


请注意,在某些情况下,对象可能看起来像是被缓存了,例如,


>>> id(id(5))

4434162352

>>> id(id(5))

4434162352

但这只是同一标识符被生命周期不重叠的两个对象重用的情况。


>>> x = id(5)

>>> y = id(5)

>>> x == y

True

>>> id(x) is id(y)

False

>>> id(x) == id(y)

False


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信