id() 是 Python 的内置函数,用于获取对象的唯一标识符(内存地址),返回值为整数。该标识符在对象的生命周期内保持不变,不同对象可能具有相同的标识符(如小整数缓存池中的对象)
核心特性:
-
内存地址映射
返回值对应对象在内存中的地址(CPython 实现中直接返回内存地址):x = 10 print(id(x)) 输出如 140736978035648 -
生命周期唯一性
同一对象生命周期内标识符不变,对象销毁后其标识符可能被新对象复用:a = [] addr1 = id(a) del a b = [] addr2 = id(b) addr2 可能等于 addr1(内存复用) -
小整数优化
部分小整数(通常为 -5 到 256)会被缓存,相同值共享内存地址:id(100) == id(100) True(缓存范围内) id(1000) == id(1000) False(非缓存范围)
典型应用场景:
对象身份验证
直接比较id(obj1) == id(obj2)比obj1 is obj2更底层(但通常优先使用is运算符)。-
内存地址转换
结合hex()查看十六进制内存地址:print(hex(id(x))) 输出如 0x7f8a5c0004a0 调试内存引用
追踪对象是否被意外复制或复用。
⚠️ 注意:不同 Python 解释器实现(如 Jython/IronPython)中
id()的返回值含义可能不同