可能重复:
Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?
在Python中,这两个语句之间有什么区别:
if x is "odp":
if x == "odp":
答案 0 :(得分:3)
==
运算符测试相等性
对象标识的is
关键字测试;我们是否在谈论同一个对象。请注意,多个变量可能引用同一个对象。
答案 1 :(得分:2)
is
运算符在==
运算符比较值时比较标识。基本上x is y
与id(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得到逆实数值