算术中奇怪的python'是'运算符

时间:2014-09-09 13:23:46

标签: python

我在python交互模式下尝试了这个操作:

>>> (1*1) is 1
True
>>> (377*35) is 13195
False
>>> 377*35
13195
>>> 377*35 is 377*35
False
>>> 1*1 is 1
True

有人可以解释为什么'(377 * 35)是13195'是假的吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

A is B检查AB是否指向同一个对象。它不会以数字方式检查A是否等于B

示例中行为不同的原因是具有较小值的int(通常介于-1和99之间) 包容性)由口译员“实习” - 只要结果具有这样的价值, 返回具有相同值的现有short int。

这解释了为什么is会为涉及小数字的示例返回True,而不会涉及涉及大数字的示例。

相关问题