我是一个相对的python新手。我在这里有一个简单的函数,它接受一个列表并删除列表中的一个元素。但是,我注意到函数实际上改变了函数外部的列表。例如,为什么函数外部的列表会被另一个函数内部的内容修改? (Python 3.4)
def test(lista):
lista.remove(1)
return(lista)
def main():
a = [1,2,3]
print(a)
x = test(lista=a)
print(a)
事实证明,以print(a)
第一个电话,我得到[1, 2, 3]
如预期,但print(a)
了第二个电话,我得到[2, 3]
这并不完全意义的我,因为我不是肯定为什么功能test
会从a
中删除元素。我知道我通过a
作为参数,但我不确定为什么lista.remove(1)
会从a
和lista
中删除元素1
。
谢谢!
'lista'是传递参数的另一个名称。也就是说,'lista'只是'a'的同义词。他们是同一个对象。 – zondo
你通过了一个列表,然后修改它......它非常简单。如果您想保留原始列表,请为该功能制作副本。 – tdelaney
有一个函数可以覆盖你传入的列表而不是返回一个新函数,这是一个好主意吗? –