我有一个 python 函数func(A)
。A
是一个numpy.array
并且可能很大,以至于我会犹豫一遍又一遍地复制它。这func(A)
想改变A的内容。我知道这是一个python新手问题。我以前用C编程,它可以通过指针来完成。如何更改 的内容,A
以便更改在 的范围之外也有效func(A)
?
问问题
197 次
2 回答
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]
于 2012-05-10T21:00:26.473 回答
0
如果传递给 A 的参数是全局参数,则可以更改参数 A 的值。另一种方法是将变量从函数传递到函数。根据我在 python 中的理解,这样做时不会复制对象。
于 2012-05-10T21:00:18.873 回答