为啥小写字符串和 string.lowercase 返回 False [重复]
Posted
技术标签:
【中文标题】为啥小写字符串和 string.lowercase 返回 False [重复]【英文标题】:Why does a lowercase string and string.lowercase returns False [duplicate]为什么小写字符串和 string.lowercase 返回 False [重复] 【发布时间】:2014-10-10 09:16:43 【问题描述】:s="wall"
d="WALL".lower()
s is d
返回False
。
s 和 d 具有相同的字符串。但为什么它返回 False?
【问题讨论】:
How is the 'is' keyword implemented in Python? 您从哪里得知is
?你应该非常非常少地使用它。
@Eevee 我是在搜索字符串操作时遇到的。
【参考方案1】:
通过使用is
,您正在比较他们的身份,如果您尝试比较他们的值的print s == d
,您将得到正确的结果。
查看此帖子了解更多详情:String comparison in Python: is vs. ==
【讨论】:
【参考方案2】:使用==
比较对象是否相等。使用is
检查两个变量是否引用完全相同的对象。这里s
和d
指的是两个具有相同内容的不同字符串对象,因此==
是正确使用的运算符。
【讨论】:
【参考方案3】:==
测试是否相等。 a == b
测试a
和b
是否具有相同的值。
is
测试身份——也就是说,a is b
测试a
和b
实际上是否是同一个对象。除了测试is None
,不要使用它。
【讨论】:
【参考方案4】:您似乎误解了is
运算符。如果所讨论的两个变量位于相同的内存位置,则此运算符返回 true。在这种情况下,虽然您有两个变量都存储值“wall”,但它们仍然是不同的,因为每个变量都有自己的单词副本。
为了正确检查字符串是否相等,您应该使用==
运算符,即值相等检查。
【讨论】:
【参考方案5】:"is" 关键字比较对象 ID,而不仅仅是值是否相等。 它与许多其他语言中的 '===' 运算符不同。 'is' 等价于:
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'来比较值,因为它会导致混淆。
【讨论】:
很好的答案,但最好省略最后一部分或解释它。它的方式可能会让初学者感到困惑。以上是关于为啥小写字符串和 string.lowercase 返回 False [重复]的主要内容,如果未能解决你的问题,请参考以下文章