以下两个示例的结果不同:
示例1
a = 845
b = int("8"+"4"+"5")
print(a == b) # True
print(a is b) # False
示例2
a = 845
b = 840+5
print(a == b) # True
print(a is b) # True
如何解释?为什么在第一种情况下,相同的整数被保存在堆中的两个不同的内存槽中?
我预计这两种情况的结果是相同的(正确)。
在第一个变量中,您对内存槽中的整数使用隐式集合,在某些情况下,相同的值在内存中共享相同的位置,但在第二个变量中,您显式创建了一个新的 int 对象,因此它将被设置在一个新的对象中内存插槽。