擅长:python、mysql、java
<p>正如许多人所指出的,<code>x += y</code>与{<cd2>}相似。在</p>
<p>一个显著的区别是<code>+=</code>运算符是一个“就地”操作。所以<code>x += y</code>实际上是“就地添加”。也就是说,它修改了对象“x”。在</p>
<p>而<code>x = x + y</code>将“x”和“y”的值相加,并将结果(作为一个新对象)存储在“x”中,丢弃其先前的值。在处理对象、自定义数值类型或任何可以在内部修改行为的用户定义类中,这一点变得更加重要。在</p>
<p><code>+</code>调用对象的<a href="https://docs.python.org/2/reference/datamodel.html#object.__add__" rel="nofollow">^{<cd7>}</a>方法。<br/>
<code>+=</code>调用<a href="https://docs.python.org/2/reference/datamodel.html#object.__iadd__" rel="nofollow">^{<cd9>}</a>。<br/>
(它可能会变得更复杂,使用<code>__radd__</code>等等,但我暂时不谈了。)</p>
<p>使用<code>+=</code>的一个很好的理由是:根据对象类型,<code>x += y</code>可以在特定情况下进行优化,但是<code>x = x + y</code>必须创建一个新对象来重新分配给“x”。在</p>