为什么一个函数外的列表会被另一个函数内的内容修改?(Python 3.4版)

2024-04-18 22:33:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个相对的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)会从alista中删除元素1。你知道吗

谢谢!你知道吗


Tags: 函数test元素列表参数returnmaindef
1条回答
网友
1楼 · 发布于 2024-04-18 22:33:49

Python对象通过对象引用传递给函数(Ruby通过引用调用此PASS,但它不同于C++通过引用)。这意味着您分配给lista的参数是原始对象a,只是对同一数据使用了一个新的命名引用对象。你知道吗

如果改为复制列表,则不会影响原始列表

x = test(lista=list(a))

相关问题 更多 >