为什么a = a + b和a + = b之间存在差异

时间:2015-06-17 18:21:12

标签: python list operators

我刚遇到这个错误:

def fn_that_uses_a_list(list):
  if (list[-1] < 0): list += [0]
  for item in list:
    print(item)

l = [-4, -2]
fn_that_uses_a_list(l)
# Now suddenly l has three items.

但是,如果我将list += [0]更改为list = list + [0],那么事情就会奏效。我发现这令人困惑,但可能是因为我是Python的新手。

为什么这种情况有区别?我正在寻找一个更具存在性的答案,而不是“list是一个参考,所以+=修改了原始的”

我做的是“非pythonic”导致我遇到错误吗?

1 个答案:

答案 0 :(得分:0)

如果我同时使用var paddle = Paddle() self.addChild(paddle) list += [0],我不确定您的身份,我会得到相同的结果。

尽管如此,list = list + [0]会改变列表,而+=会创建一个新列表。尝试:

+