猿问

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

某个不愿理透露姓名的大大跟我说:
小伙子啊,你的代码有潜在的bug啊,i+=x会粗问题的。我思考了良久,都不得要领。
那么请问,什么情况下"i+=x"不等于"i=i+x"?
慕容708150
浏览 462回答 2
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.)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答