假设我创建了一个函数 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/