Python:对象身份问题?

时间:2010-03-10 19:01:10

标签: python object identity

  

可能重复:
  Python “is” operator behaves unexpectedly with integers

>>>a=123
>>>b=123
>>>a is b
True
>>>id(a)==id(b)
True
我的问题是,为什么id(a)与id(b)相同?。
它们不是两个不同的类int实例吗?

< / p>

3 个答案:

答案 0 :(得分:3)

通常小整数引用内存中相同的缓存对象以提高效率。

答案 1 :(得分:2)

int被缓存。这是一个无关紧要的实现细节,因为int无论如何都是不可变的。

答案 2 :(得分:1)

变量

a and b 

两者都是对id为唯一的对象123的引用。

当您将相同值 123 分配给两个差异变量 a b 时,

然后将同一个对象 123 分配给变量 a b ,但对该对象的引用计数会增加您的案例refrecnce count对象 123 两个