== vs 的一个例外是?

An exception with == vs is?

据我了解,== 运算符检查两个变量是否相等,而 is 运算符检查两个变量是否具有相同的标识/引用相同的对象。那么为什么 print(id(a) is id(b)) False 呢?这两个变量引用的不是同一个整数吗?

a = 1000000000
b = 1000000000

print(id(a))           #182798416
print(id(b))           #182798416
print(id(a) is id(b))  #False
print(id(a) == id(b))  #True
print(182798416 is 182798416) #True

id函数returns一个新的整型对象,每次都是,所以整型对象是不一样的。