Python中变量的指向
假设我创建了一个函数Python中变量的指向,python,Python,假设我创建了一个函数a,在另一个函数中用作参数,那么B(a)。函数A指向(SciPy)数组C中的一个条目。如果我从B中更改数组C,那么数组中的值将全局更改,因此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
a
,在另一个函数中用作参数,那么B(a)
。函数A
指向(SciPy)数组C
中的一个条目。如果我从B
中更改数组C
,那么数组中的值将全局更改,因此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.]
通过在B
中本地复制,可以避免数组C
全局更改,如下所示:
[...]
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
忽略了它的参数)。你能为你的实际应用提供一些背景吗?因为你展示的代码似乎有点不对劲。我很高兴这样做,我更新了我的问题。让我知道你是否认为这仍然适合这个问题。如果没有,如果你能给我指一个相关的论坛,那就太好了!为什么需要一个指向函数呢?难道你就不能复制indermediate向量,存储它们(或者只存储你需要的信息)然后继续你的算法吗?如果我愿意的话,就按照我的目的来做这个算法-没问题。如果我想写一个通用算法,麻烦就从这里开始!也许解决办法是找到方程组的另一个公式……你所说的一般算法是什么意思?我担心在这里继续讨论这个问题会偏离主题。你能继续聊天吗?