1

我有一个 python 函数func(A)A是一个numpy.array并且可能很大,以至于我会犹豫一遍又一遍地复制它。这func(A)想改变A的内容。我知道这是一个python新手问题。我以前用C编程,它可以通过指针来完成。如何更改 的内容,A以便更改在 的范围之外也有效func(A)

4

2 回答 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 回答