Python: 对象身份问题?

3 投票
3 回答
3517 浏览
提问于 2025-04-15 20:15

可能重复的问题:
Python中的“is”运算符在处理整数时表现得很奇怪

>>>a=123
>>>b=123
>>>a is b
True
>>>id(a)==id(b)
True
我的问题是,为什么id(a)和id(b)是一样的呢?
难道它们不是两个不同的int类的实例吗?

3 个回答

1

变量

a and b 

这两个变量都是指向一个叫做123的对象,而这个对象的ID是独一无二的。

当你把相同的值123赋给两个不同的变量ab时,

这就意味着123这个对象同时被赋值给了变量ab,但这个对象的引用计数会增加。在你的例子中,对象123的引用计数变成了

2

int类型的数字是被缓存的。这是一个实现细节,其实你不需要太在意,因为int类型的数字本身是不可改变的。

3

通常情况下,小的整数在内存中会指向同一个缓存对象,这样做是为了提高效率。

撰写回答