我有一个python函数func(A)
。 A
是numpy.array
,可能很大,以至于我一次又一次地犹豫复制它。这个func(A)
想要改变A的内容。我知道这是一个python新手问题。我以前用C语言编程,它可以用指针完成。如何更改A
的内容,以便更改在func(A)
范围之外也有效?
答案 0 :(得分:6)
tl; dr在你的情况下,它基本上已经是。除非为方法中的标签A指定新值,否则A将是对您传递的对象的引用,这意味着对A的任何修改都将在您使用它的任何其他位置更改原始对象。
例如:
>>> def foo(A):
... print A[0]
... A[0] = 2
... print A[0]
...
>>> a = [0, 1, 2]
>>> foo(a)
0
2
>>> a
[2, 1, 2]
>>> def bar(A):
... print A[0]
... A = [0, 1, 2]
... A[0] = 2
... print A[0]
...
>>> a = [0, 1, 2]
>>> bar(a)
0
2
>>> a
[0, 1, 2]
答案 1 :(得分:0)
如果传递给A的参数是全局参数,则可以更改参数A的值。另一种方法是将变量从函数传递给函数。从 我在python中理解的是,当你这样做时,不会复制该对象。