假设我创建了一个函数 A 用作另一个函数中的参数,因此 B(A) 。函数 A 指向 (SciPy) 数组 C 中的一个条目。如果我从 C 中更改数组 B ,则数组中的值将全局更改,因此 A 也会注意到该更改。下面是一个例子:

def pointing_test2(inputs, fs):
    local = inputs
    print (local is initial)
    print fs(0)
    local[0] += 1.0
    print fs(0)

initial = sc.array([1.0])
func = lambda x: initial[0]

pointing_test2(initial, func)

------- Output -------
True
1.0
2.0
[ 2.]

可以通过在 C 中本地复制来避免数组 B 被全局更改,如下所示:
[...]
        local = inputs.copy()
[...]

------- Output -------
False
1.0
1.0
[ 1.]

我要实现的是中途!我想让函数 A 指向本地数组的副本,所以在 B 中!以这种方式,我想要的输出如下:
------- Output -------
False
1.0
2.0
[ 1.]

我怎样才能做到这一点?

最佳答案

最直接的方法是编写 A 以便 B 将要处理的数组传递给它(因此:本地修改的数组)。你有什么理由不想这样做吗?

def func(arr):
    return arr[0]

(顺便说一句,您的 func 忽略了它的参数)。

关于python - Python中变量的指向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9711357/

10-12 22:00