python中实例的地址值和id(实例)的地址值有什么区别?

What is the difference between the address value from instance and the address value from id(instance) in python?

class T:
    pass


t = T()

print(t) # <__main__.T object at 0x100651460>
print(id(t)) # 4301591648

上面代码中的0x100651460和4301591648有什么区别? id(t)就是打印对象的地址值大家都知道。然而,<main.T object at 0x100651460> 也意味着 0x100651460 是对象的地址值。哪个才是真正的地址值?

他们是同一个号码。数值上没有区别,唯一不同的是第一个用hexadecimal表示,第二个用十进制表示

>>> hex(4301591648)
'0x100651460'
>>> 0x100651460 == 4301591648
True

前缀0x通常用于表示十六进制表示。