Python x = x + 1和x + = 1之间的差异

Joh*_*ohn 15 python

在Python中,写作x = x+1x += 1?之间是否有任何区别(语义,效率等)?

lvc*_*lvc 15

是.根据类的x编码方式,短格式可以选择就地修改x,而不是创建表示总和的新对象并将其重新绑定到相同的名称.如果你有多个变量引用同一个对象,这就有了意义 - 例如,使用列表:

>>> a = b = []
>>> a += [5]
>>> a
[5]
>>> b
[5]
>>> a = a + [5]
>>> a
[5, 5]
>>> b
[5]
Run Code Online (Sandbox Code Playgroud)

这是因为在幕后,运营商调用不同的魔术方法:+电话__add____radd__(这是预期不修改任何他们的论据),并+=尝试__iadd__(这是不允许修改self,如果它感觉就像是)回落至之前+的逻辑,如果__iadd__ISN在那里.


Ash*_*ary 5

它们对于整数和浮点数几乎相同,但是对于lists:

lis = lis+['foo']通过连接创建一个新的列表lis['foo'],然后将结果赋给lis

并且:

lis += [foo] 相当于 lis.extend([foo])

>>> lis = [1,2,3]
>>> id(lis)
3078880140L
>>> lis += ['foo']   #or lis.extend(['foo'])
>>> id(lis)          #same object
3078880140L


>>> lis = [1,2,3]
>>> id(lis)
3078880076L
>>> lis = lis+['foo']
>>> id(lis)            #new object
3078880012L
Run Code Online (Sandbox Code Playgroud)