为什么小写字符串和string.lowercase返回False

时间:2014-08-17 06:08:03

标签: python

s="wall"
d="WALL".lower()

s is d返回False。 s和d具有相同的字符串。但为什么它返回False?

5 个答案:

答案 0 :(得分:2)

==测试平等。 a == b测试ab是否具有相同的值。

is身份测试 - 即a is b测试ab实际上是同一个对象。除了测试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检查两个变量是否引用完全相同的对象。这里sd引用具有相同内容的两个不同的字符串对象,因此==是要使用的正确运算符。