为什么数组在这种情况下不会发生变异

时间:2016-11-08 19:28:06

标签: python arrays immutability

我知道数组是可变的。所以,如果我有一个像:

这样的功能
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

0 个答案:

没有答案