2017-05-19 19 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已經提到,您需要返回值。