如何在没有= =(a,b)的情况下更改函数外的列表?

时间:2013-10-19 23:23:51

标签: python function return

l = ["1","2"]
e = "3"
def add(e,s):
    s = s + [e]
    return s
add(e,l)
print(l)

为什么不打印['1','2','3']

1 个答案:

答案 0 :(得分:3)

s + [e]是一个新列表。您可以将此值分配给函数s中的变量add

此变量与外部代码中的变量l不同。它首先引用同一个对象,但是当您将另一个对象分配给s时,可以更改它。

您可能想要做的是更改s引用的对象的内容,而不是让s引用不同的对象:

s.append(e)

这意味着sl将继续引用同一个对象,并修改该对象。