我不明白为什么这些功能会产生不同的结果;我认为s+=
和s=s+
是等价的:
def foo(s):
s += ['hi']
def foo2(s):
s = s + ['hi']
但是第一个修改了列表s
而第二个修改了列表DOCKER_HOST
。有人可以帮我澄清一下吗?
答案 0 :(得分:3)
x+= y
仅与x = x + y
相同,仅适用于不可变类型。对于可变类型,存在用于就地更改对象的选项。因此,对于列表,+=
与list.extend()
相同,然后重新绑定名称。
阅读:Augmented Assignment Statements和Why does += behave unexpectedly on lists?了解详情。
答案 1 :(得分:-1)
使用list.append因为如果你说s = s + [' hi']那么s只指向另一个对象,但是如果你使用.append()则会改变相同的列表