关于if语句后字符串内容的更改

关于if语句后字符串内容的更改

info = 'my name is dewei'

print(len(info))    #长度为16


if len(info) > 10 and len(info) != 15:

    print(info.replace('dewei', 'xiaomu'), id(info))   

                                        #输出结果是: my name is xiaomu  1877937982400

print(info, id(info))     #这里的输出结果怎么是: my name is dewei  1877937982400  ??

内容dewei 不是已经被 xiaomu 替代了嘛,为什么第二个print输出的结果还是dewei?  这两个info的id还一样

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!同学的info 地址是一样的,是同一个变量,所以是一样的

https://img1.sycdn.imooc.com//climg/64255f71099ffe2410420434.jpg

info.replace('dewei', 'xiaomu')和info 的地址是不一样的。info.replace('dewei', 'xiaomu')返回了替换后的字符串,把返回的内容存储到一个新的地址空间。不影响原来info的 地址和内容。同学可以使用id 分别对info.replace('dewei', 'xiaomu')和info 进行查看地址空间和输出内容,发现他们地址和内容都是不同的

https://img1.sycdn.imooc.com//climg/64255e12093bbff312150513.jpg

祝学习愉快~

  • qq_夏日青枫_0 提问者 #1

    1、也就是说id(info)和id(info.replace)是不一样的存储位置对吧。如果是这样的话可以理解。

    2、那replace也不是对info进行更改啊,我们要的不就是当if 后的语法块为真时,是要对 info 内容进行修改嘛,但用了replace后if外的print输出结果还是 my name is dewei,而不是xiaomu,这样的操作有什么意义?不像应用总结中的例子 

    name = '小司'

    if name = '小司':

        name = '小李'

        print(name)

    print(name)       

    这样在if 后语法块为真时才是对name 进行了修改  ,结果都是小李

    2023-03-30 18:50:16
  • 同学,你好!因为每个人想法不同,也可能程序中后续会用到info变量 ,所以不替换。同学知道字符串.replace()不是在原来字符串进行修改即可。无需太纠结。 

    祝学习愉快~

    2023-03-31 10:41:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师