Python: 对象身份问题?
可能重复的问题:
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赋给两个不同的变量a和b时,
这就意味着123这个对象同时被赋值给了变量a和b,但这个对象的引用计数会增加。在你的例子中,对象123的引用计数变成了二。
2
int
类型的数字是被缓存的。这是一个实现细节,其实你不需要太在意,因为int
类型的数字本身是不可改变的。
3
通常情况下,小的整数在内存中会指向同一个缓存对象,这样做是为了提高效率。