为何第一段代码中的replace函数无法生效?
问题:Python中str.replace()调用后未生效的原因
我尝试在以下代码1中将字符串里的"crazy"替换为"strange",但运行后输出原字符串,replace函数未生效:
Code 1
message = "He had a crazy, crazy dream!" message.replace("crazy","strange") print(message)
Output:
He had a crazy, crazy dream!
而将replace的返回值赋值给变量后(代码2),替换功能正常:
Code 2
message = "He had a crazy, crazy dream!" b = message.replace("crazy","strange") print(b)
Output:
He had a strange, strange dream!
请问代码1存在什么问题?为何replace函数无法生效?
解答
核心原因是Python中的字符串是不可变对象:
- 调用
str.replace()时,这个方法不会修改原字符串本身,而是创建并返回一个包含替换结果的新字符串。 - 代码1仅调用了
replace()但未接收返回的新字符串,原message变量仍指向最初的字符串,因此打印结果还是原内容。 - 代码2将
replace()返回的新字符串赋值给了变量b,打印b就能看到替换后的结果。
你也可以直接把返回值重新赋值给原变量,效果和代码2一致:
message = "He had a crazy, crazy dream!" message = message.replace("crazy","strange") print(message)
内容的提问来源于stack exchange,提问作者Defiler 4.0
相关产品推荐
相关产品推荐

