为什么使用'is'而不是equals(==)进行整数比较会在python中返回不同的结果?

时间:2013-07-11 15:47:54

标签: python

def makes10(a, b):
 return ((a or b) is 10) or (a+b is 10)

makes10(9, 10)  False

我希望上面的内容与下面相同,但返回不同的结果。

def makes10(a, b):
  return (a == 10 or b == 10 or a+b == 10)

makes10(9, 10)  True

2 个答案:

答案 0 :(得分:1)

>>> (1 or 10) is 10
False
>>> (10 or 1) is 10
True
>>> (1 or 10)
1

使用或者检查这些数字中的任何一个是否为10只是不起作用...

make10()的底部版本可能是要走的路。正如@Wooble所说,不要使用是比较整数值。

答案 1 :(得分:0)

Python会将a和b作为2个不同的对象。

使用“is”比较对象,而“==”将按值进行比较。

例如,如果你有一个= 10,

a == 10应该返回true 并且a是10应该返回false