Python的.replace()方法运行原理及多次替换赋值差异原因解析
两种replace写法差异原因解析
Python 中的字符串是不可变对象,str.replace() 方法不会修改原字符串本身,只会返回完成替换后的全新字符串。两种写法的差异完全来自于循环中替换操作的基准字符串和赋值逻辑不同。
原变量接收结果的执行逻辑
每次循环都会将替换后的结果覆盖更新到原变量
email,下一轮循环的替换操作直接基于上一轮已经修改过的字符串执行:- 第一轮循环替换字符
@:原始输入字符串sdf@sadfs.com替换后得到sdf|sadfs.com,赋值给email - 第二轮循环替换字符
.:基于上一步更新后的sdf|sadfs.com执行替换,得到最终结果sdf|sadfs|com,再次赋值给email
因此最终输出两个目标字符都完成了替换。
- 第一轮循环替换字符
新变量接收结果的执行逻辑
所有循环的替换操作都基于**最原始的未修改的输入字符串
email**执行,且每一轮循环都会覆盖temp_email的上一轮结果:- 第一轮循环替换字符
@:用原始输入字符串替换后得到sdf|sadfs.com,赋值给temp_email - 第二轮循环替换字符
.:仍然调用原始输入字符串的replace方法执行替换,得到sdf@sadfs|com,直接覆盖了temp_email中第一轮的替换结果
因此最终输出仅完成了.的替换,第一轮的替换结果被完全覆盖。
- 第一轮循环替换字符
如果需要用新变量实现同样的替换效果,调整写法如下:
email = input("Please enter your email address : ") # 先将原始值赋值给新变量,后续所有替换都基于新变量修改 temp_email = email for x in ('@','.'): temp_email = temp_email.replace(x,'|') print(temp_email)
内容的提问来源于stack exchange,提问作者Jackson Tai
相关产品推荐
相关产品推荐

