Python是vs ==

时间:2011-10-10 21:16:48

标签: python operators

  

可能重复:
  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以及何时使用==

2 个答案:

答案 0 :(得分:10)

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

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

>>> x = 256
>>> x is 256
True
>>> x = 257
>>> x is 257
False

答案 1 :(得分:2)

这两个运营商有不同的含义。

  • is测试对象标识。这两个操作数是否指向同一个对象?
  • ==测试值的相等性。这两个操作数是否具有相同的值?

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