【发布时间】:2017-10-19 14:18:13
【问题描述】:
为什么在第二种情况下我替换字符串的一部分(实际上是一个字母)时会发生这种情况,没有任何变化
in> #first case
in>print('Hello, World!'.replace('l','L'))
out>HeLLo, WorLd!
#second case
a = 'Hello, World!'
a.replace('l','L')
print(a)
out>Hello, World!
【问题讨论】:
-
因为
replace不会更改现有字符串。它创建一个新版本的字符串并返回它。 -
理解python字符串是不可变的很重要。
-
执行此操作 a.replace('l','L') 不会影响您的字符串 'a',正如 Toto 所说,您必须将其分配回您的变量或另一个变量。
-
@polku 当然,虽然通常是正确的,但 CPython 有时会对简单的
+=操作进行优化,这些操作确实会改变字符串 stackoverflow.com/a/25503738/6260170