我知道数组是可变的。所以,如果我有一个像:
这样的功能def foo(xs):
xs.append(4)
>>> xs = [1,2,3]
>>> foo(xs)
>>> xs
[1,2,3,4]
这对我有意义。但是在这样的数组赋值期间会发生什么?
def foo(xs):
ys = ['a','b','c']
xs = ys
>>> xs = [1,2,3]
>>> foo(xs)
>>> xs
[1,2,3]
为什么函数中的引用更改不会更改xs
指向外部foo
的内容?我的猜测是,当赋值发生时,创建一个名为xs
的新引用,这意味着输入参数不再可访问。但是,如果我想要这种行为(在函数中重新分配数组的值),那么比以下方式迭代每个元素更容易:
def foo(xs):
ys = ['a','b','c']
for idx, item in enumerate(ys):
xs[i] = item