2017-05-19 18 views
1

当我在第二种情况下没有替换字符串的一部分(在该情况下,实际上是一个字母),它为什么会发生改变我用字符串的方法困惑.replace

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! 
+2

因为'replace'不会改变现有的字符串。它创建一个新的字符串版本并返回它。 – JCVanHamme

+2

理解python字符串是不可变的是很重要的。 – polku

+0

这样做a.replace('l','L')不会影响你的字符串'a',正如托托所说的,你必须将它分配给你的变量或其他变量。 – berthos

回答

5

你有分配结果的替换到变量:

a = 'Hello, World!' 
a = a.replace('l','L') 
print(a) 
1

Documentation

返回字符串s与substri所有出现的一个副本ng old被新的取代。如果给出可选参数maxreplace,则会替换第一个maxreplace事件。

由于@Toto已经提到,您需要返回值。