什么时候“i+=x”与Python中的“i=i+x”不同?

什么时候“i+=x”与Python中的“i=i+x”不同?

我听说+=可以产生与标准符号不同的效果。i = i +..有没有一个案子i += 1将不同于i = i + 1?


狐的传说
浏览 655回答 3
3回答

慕村9548890

在被子下面,i += 1做这样的事:try:     i = i.__iadd__(1)except AttributeError:     i = i.__add__(1)当i = i + 1做这样的事:i = i.__add__(1)这有点过于简单化,但是您了解到:Python提供了一种处理类型的方法+=特别是,通过创建一个__iadd__方法以及__add__.意图是可变的类型,比如list,会变异到__iadd__(然后回来self,除非您正在做一些非常棘手的事情),而不可变的类型,例如int不会实现的。例如:>>> l1 = []>>> l2 = l1>>> l1 += [3]>>> l2[3]因为l2是与l1,你变异了l1,你也变异了l2.但是:>>> l1 = []>>> l2 = l1>>> l1 = l1 + [3]>>> l2[]在这里,你没有变异l1相反,您创建了一个新列表,l1 + [3],并重新命名l1指着它,离开l2指向原始列表。(在+=版本,您也重新绑定了l1,只是在这种情况下,您重新绑定到相同的list它已经注定了,所以你通常可以忽略这一部分。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python