x is y与有所不同
x == y。
x is y当且仅当
id(x) == id(y)-即
x且
y必须是一个相同的对象(具有
ids)时才为true 。
对于所有内置的Python对象(如字符串,列表,字典,函数等),如果
x is y,则
x ==y也为True。但是,通常不能保证这一点。严格来说,
x == y当且仅当
x.__eq__(y)返回True时,才为true 。
例如,可以使用始终返回False
x的
__eq__方法来定义对象,并且
x == y即使也会导致返回False
x is y。
所以最重要的是,
x is y而且
x == y完全是不同的测试。
考虑以下示例:
In [1]: 0 is FalseOut[1]: FalseIn [2]: 0 == FalseOut[2]: True
PS。代替
if x is y: return Trueelse: return False
写起来更Python化
return x is y
同样,
if x == y: return Trueelse: return False
可以替换为
return x == y



