传递列表以在Python中运行

时间:2016-10-02 14:54:17

标签: python

我不明白为什么这些功能会产生不同的结果;我认为s+=s=s+是等价的:

def foo(s): 
     s += ['hi']

def foo2(s):
     s = s + ['hi']

但是第一个修改了列表s而第二个修改了列表DOCKER_HOST。有人可以帮我澄清一下吗?

2 个答案:

答案 0 :(得分:3)

x+= y仅与x = x + y相同,仅适用于不可变类型。对于可变类型,存在用于就地更改对象的选项。因此,对于列表,+=list.extend()相同,然后重新绑定名称。

阅读:Augmented Assignment StatementsWhy does += behave unexpectedly on lists?了解详情。

答案 1 :(得分:-1)

使用list.append因为如果你说s = s + [' hi']那么s只指向另一个对象,但是如果你使用.append()则会改变相同的列表