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

2024-10-04 11:24:00 发布

您现在位置: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

上面发生了什么? 为什么一个是假的另一个是真的。你知道吗

资料来源:https://luminousmen.com/post/python-interview-questions-senior


Tags: https程序comfalsetrueis来源post
1条回答
网友
1楼 · 发布于 2024-10-04 11:24:00

因为is比较两个对象的同一性(也就是说,如果它们是完全相同的对象),所以您要测试相等性,为此必须使用==运算符:

big_num_1 == big_num_2
=> True

small_num_1 == small_num_2
=> True

如果您想知道为什么这个例子有效:

small_num_1 is small_num_2
=> True

这是因为Pythoncaches在内部很小(介于-5和256之间)int对象,所以比较中使用的对象是从缓存中获取的,并且是相同的。big_num_1big_num_2大于256,因此它们由两个不同的对象表示,标识测试失败。你知道吗

相关问题 更多 >