为啥小写字符串和 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 检查两个变量是否引用完全相同的对象。这里sd 指的是两个具有相同内容的不同字符串对象,因此== 是正确使用的运算符。

【讨论】:

【参考方案3】:

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

is 测试身份——也就是说,a is b 测试ab 实际上是否是同一个对象。除了测试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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

python 使用字符串

String模块生成常用的数字字母库

Python:字符串函数

python 生成随机数

字符串随机数练习

python的字符串模块