s="wall"
d="WALL".lower()
s is d
返回False
。
s和d具有相同的字符串。但为什么它返回False?
答案 0 :(得分:2)
==
测试平等。 a == b
测试a
和b
是否具有相同的值。
is
身份测试 - 即a is b
测试a
和b
实际上是同一个对象。除了测试is None
之外,不要使用它。
答案 1 :(得分:1)
您似乎误解了is
运营商。如果有问题的两个变量位于同一个内存位置,则此运算符返回true。在这种情况下,虽然你有两个变量都存储了值" wall"但它们仍然是不同的,因为每个变量都有自己的单词副本。
为了正确检查字符串相等性,您应该使用==
运算符,它是值相等性检查。
答案 2 :(得分:1)
“is”关键字比较对象ID,而不仅仅是值是否相等。 它与许多其他语言中的'==='运算符不同。 '是'相当于:
id(s) == id(d)
还有一些更有趣的案例。例如(在CPython中):`
a = 5
b = 5
a is b # equals to True
但:
c = 1200
d = 1200
c is d # equals to False
结论是:不要使用'is'来比较值,因为它可能导致混淆。
答案 3 :(得分:0)
使用is
您正在比较他们的身份,如果您尝试比较他们的值print s == d
,您将会成真。
查看此帖子了解详情:String comparison in Python: is vs. ==
答案 4 :(得分:0)
使用==
比较对象是否相等。使用is
检查两个变量是否引用完全相同的对象。这里s
和d
引用具有相同内容的两个不同的字符串对象,因此==
是要使用的正确运算符。