Python:`is`和`==`之间的区别?

时间:2010-03-10 18:09:07

标签: python syntax

  

可能重复:
  Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?

在Python中,这两个语句之间有什么区别:

if x is "odp":

if x == "odp":

4 个答案:

答案 0 :(得分:3)

==运算符测试相等性

对象标识的is关键字测试;我们是否在谈论同一个对象。请注意,多个变量可能引用同一个对象。

答案 1 :(得分:2)

is运算符在==运算符比较值时比较标识。基本上x is yid(x) == id(y)

相同

答案 2 :(得分:1)

出于实现原因,“odp”是一个不好的例子,但你不应该使用is,除非你想要两个相同的字符串评估为false的可能性:

>>> lorem1 = "lorem ipsum dolor sit amet"
>>> lorem2 = " ".join(["lorem", "ipsum", "dolor", "sit", "amet"])
>>> lorem1 == lorem2
True
>>> lorem1 is lorem2
False

正如其他人所说,是测试身份,而不是平等。在这种情况下,我有两个具有相同内容的单独字符串。 然而,您不应该依赖此:

>>> odp1 = "odp"
>>> odp2 = "".join(["o", "d", "p"])
>>> odp1 == odp2
True
>>> odp1 is odp2
True 

换句话说,从不用来比较字符串。

P.S。 在Python 2.7.10 >>> odp1 is odp2中返回False。

答案 3 :(得分:0)

请参阅here

  

运算符不是测试对象标识:当且仅当x和y是同一个对象时,x是y才为真。 x不是y得到逆实数值