为了账号安全,请及时绑定邮箱和手机立即绑定

据说在 python 下,某个情况下 "i += x" 不等于 "i = i + x"?

据说在 python 下,某个情况下 "i += x" 不等于 "i = i + x"?

慕容708150 2019-04-16 20:26:20
某个不愿理透露姓名的大大跟我说:小伙子啊,你的代码有潜在的bug啊,i+=x会粗问题的。我思考了良久,都不得要领。那么请问,什么情况下"i+=x"不等于"i=i+x"?
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

很明显,就像2楼所说。
代码1l2=l1,l2+=[4],操作的都是l1,类似指针,引用神马的,理解不了就这么想就可以了。
代码2l2=l1,l2=l2+[4],这很明显是对l2进行重新赋值。你可以这样写l3=l2+[4],l2+=[4]。然后就知道结果了。
python的深拷贝和浅拷贝,可以了解一下
2楼stackoverflow里面有一个很不错的答案,直接用id()看内存地址
>>>l=[]
>>>id(l)
13043192
>>>l+=[3]
>>>id(l)
13043192
>>>l=l+[3]
>>>id(l)
13059216
不用太纠结,直接看内存地址就一目了然。
id是python内置函数,what'sid?...
《'id'isabadvariablenameinPython》
id()isafundamentalbuilt-in:
Helponbuilt-infunctionidinmodulebuiltin:
id(...)
id(object)->integer
Returntheidentityofanobject.Thisisguaranteedtobeuniqueamong
simultaneouslyexistingobjects.(Hint:it'stheobject'smemory
address.)
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 461 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号