我是一个相对的python新手。我这里有一个简单的函数,它接受一个列表并删除列表中的一个元素。但是,我注意到函数实际上改变了函数外部的列表。例如
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
。你知道吗
谢谢!你知道吗
Python对象通过对象引用传递给函数(Ruby通过引用调用此PASS,但它不同于C++通过引用)。这意味着您分配给
lista
的参数是原始对象a
,只是对同一数据使用了一个新的命名引用对象。你知道吗如果改为复制列表,则不会影响原始列表
相关问题 更多 >
编程相关推荐