某个不愿理透露姓名的大大跟我说:小伙子啊,你的代码有潜在的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)->integerReturntheidentityofanobject.Thisisguaranteedtobeuniqueamongsimultaneouslyexistingobjects.(Hint:it'stheobject'smemoryaddress.)
添加回答
举报
0/150
提交
取消
