Python的replace()函数为什么没有将字符串里的dog替换为cat?
你的猜测完全正确,str.replace() 方法本身不会修改原变量a的值,核心原因是:Python中的字符串属于不可变对象,一旦创建就不能修改其内部内容,所有针对字符串的修改操作都不会改动原对象,只会生成并返回一个全新的字符串对象。
你给出的代码中,调用a.replace('dog', 'cat')生成的新字符串'cat'没有被赋值给任何变量,直接被丢弃了,原变量a仍然指向最开始创建的'dog'字符串,所以打印结果还是dog。
正确的写法是将replace的返回值赋值给变量(可以覆盖原变量,也可以赋值给新变量):
a = 'dog' # 接收replace返回的新字符串 a = a.replace('dog', 'cat') print(a)
拓展说明:不止是replace,Python字符串的所有内置方法,比如strip()、upper()、join()等,只要涉及内容修改,都是返回新对象,不会改动原字符串,这是不可变类型的统一特性。
内容的提问来源于stack exchange,提问作者reallycool123
相关产品推荐
相关产品推荐

