id()函数,在python中是运算符

Aparnaa Shree:
id(5) is id(5)  #returned False
id(5) == id(5)  #returned True

如果操作数指向同一对象,则is运算符返回true。在这里,它指向同一对象(即5)。但是在这里,它返回为False。背后的原因是什么?

chepner:

首先,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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章