关于运算符:Python是vs ==

Python is vs ==

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
String comparison in Python: is vs. ==
When is the == operator not equivalent to the is operator? (Python)

我对Python还是很陌生。我听说有人说使用is,而不是==,因为"这不是c"。但是我有一些代码x is 5,它没有按预期工作。

那么,按照正确的python/pep风格,什么时候使用is,什么时候使用==


应该使用==比较两个值。您应该使用is查看两个名称是否绑定到同一对象。

您几乎不应该使用x is 5,因为根据实现的不同,小整数可能会被实习生。这可能导致令人惊讶的结果:

1
2
3
4
5
6
>>> x = 256
>>> x is 256
True
>>> x = 257
>>> x is 257
False


这两个运算符的含义不同。

  • is测试对象身份。这两个操作数是指同一个对象吗?
  • ==检验值的相等性。这两个操作数的值相同吗?

当比较x5时,你总是对价值感兴趣,而不是对持有价值的对象感兴趣。