【发布时间】:2014-03-03 12:09:32
【问题描述】:
我虽然 a += b 只是 a = a + b 的快捷方式。似乎并不完全。这是一个例子:
>>> a = [1, 2, 3]
>>> b = a
>>> b += [4, 5, 6]
>>> b
[1, 2, 3, 4, 5, 6]
>>> a # is also changed
[1, 2, 3, 4, 5, 6]
但这按预期工作:
>>> a = [1, 2, 3]
>>> b = a
>>> b = b + [4, 5, 6]
>>> b
[1, 2, 3, 4, 5, 6]
>>> a # not changed
[1, 2, 3]
现在,我知道当我执行 b = a 时,b 引用与 a 相同的列表,如果我对 b 执行一些操作,它们会自动“应用”到 a(因为他们都指向同一个列表,当我做b = b + [4, 5, 6] 时,会创建一个新列表,然后分配给b,但我的问题是……为什么会有这种区别?我的意思是,a += b 不应该是a = a + b 的简写?这是人们所期望的……对此有什么合乎逻辑的解释?
【问题讨论】:
-
+=不仅仅是一条捷径。
标签: python