Python 在函数中操纵全局数组的值 请考虑以下两个例子。 例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]

Python 在函数中操纵全局数组的值 请考虑以下两个例子。 例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],python,arrays,numpy,call,Python,Arrays,Numpy,Call,下面是示例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通过引用调用函数。但为什么第二个函数可以更改全局数据数组的值,但不能附加到它 : arr:将值追加到此数组的副本 因此,您正在修改g()中的本地副本 ar

下面是示例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通过引用调用函数。但为什么第二个函数可以更改全局数据数组的值,但不能附加到它

arr:将值追加到此数组的副本

因此,您正在修改
g()中的本地副本

arr:将值追加到此数组的副本

因此,您正在修改
g()中的本地副本