Python 带有“is”关键字的意外输出

Python 带有“is”关键字的意外输出,python,Python,我无法计算以下程序的输出 big_num_1 = 1000 big_num_2 = 1000 small_num_1 = 1 small_num_2 = 1 big_num_1 is big_num_2 # False small_num_1 is small_num_2 # True 上面发生了什么? 为什么一个是假的,另一个是真的 来源:因为is比较两个对象的标识,也就是说,如果它们是完全相同的对象。要测试相等性,必须使用==运算符: big_num_1 == big_num_2

我无法计算以下程序的输出

big_num_1   = 1000
big_num_2   = 1000
small_num_1 = 1
small_num_2 = 1
big_num_1 is big_num_2 # False
small_num_1 is small_num_2 # True
上面发生了什么? 为什么一个是假的,另一个是真的

来源:

因为is比较两个对象的标识,也就是说,如果它们是完全相同的对象。要测试相等性,必须使用==运算符:

big_num_1 == big_num_2
=> True

small_num_1 == small_num_2
=> True
如果您想知道为什么这个示例有效:

small_num_1 is small_num_2
=> True
这是因为Python内部的int对象很小,介于-5和256之间,所以比较中使用的对象是从缓存中获取的,并且是相同的。big_num_1和big_num_2大于256,因此它们由两个不同的对象表示,标识测试失败