gpt4 book ai didi

python - 传递给函数时列表会发生什么?

转载 作者:太空狗 更新时间:2023-10-30 01:46:23 26 4
gpt4 key购买 nike

我想了解当列表作为参数传递给函数时如何处理。所以我做了以下事情:

我初始化了一个列表:

ll = [1,2,3,4] 

并定义一个函数:

def Foo(ar):
ar += [11]

我将列表传递给函数:

Foo(ll)

当我打印它时,我得到了:

print ll # [1, 2, 3, 4, 11] #case(1)

到目前为止一切顺利。

现在我修改了函数以重置列表,使其只有一个元素:

def Foo(ar):
ar = [11]

我记得语法:

Foo(ll)

当我重印它时,结果是相同的列表:

print ll # [1, 2, 3, 4] # case(2)

我认为该列表是作为引用传递的;所以无论我们在函数内部对列表做什么,都会改变从主程序传递的原始函数。因此,对于案例 (2),我期望得到以下结果:

print ll # [11] # case(2) expected result

我是不是漏掉了什么?

最佳答案

ar += [11] 只是一个赋值。这是一个方法调用(调用的方法是:__iadd__)。当 Python 执行该行时,它会调用该方法,然后将 ar 分配给结果。 list__iadd__ 方法修改当前list

ar = [11] 是一个赋值,因此它只是更改本地名称ar。但是函数内部的 ar 名称和 ll 变量的值之间没有任何联系。

你可能想要这样的东西:

ar[:] = [11]

关于python - 传递给函数时列表会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com