处理函数内全局数组的值

时间:2014-06-05 14:26:54

标签: python arrays numpy call

请考虑以下两个例子。 例1:

def f(inp):
    inp[0] = 42
    inp.append(12)
    inp.append(13)

v = [1, 2, 3, 4]
f(v)
print(v)

>>> [42, 2, 3, 4, 12, 13]

这里是例2:

def g(inp):
    inp[0] = 42
    np.append(inp, [12, 13])

u = np.array([1, 2, 3, 4])
g(u)
print(u)

>>> [42  2  3  4]

在第一个中,该函数可以更改全局列表的元素并附加到它。这是因为Python通过引用调用函数。但是为什么第二个函数可以改变全局ndarray的值,但不能附加到它?

1 个答案:

答案 0 :(得分:4)

http://docs.scipy.org/doc/numpy/reference/generated/numpy.append.html

  

arr:值附加到此数组的副本。

因此您要修改g()

中的本地副本