Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中变量的指向_Python - Fatal编程技术网

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向量,存储它们(或者只存储你需要的信息)然后继续你的算法吗?如果我愿意的话,就按照我的目的来做这个算法-没问题。如果我想写一个通用算法,麻烦就从这里开始!也许解决办法是找到方程组的另一个公式……你所说的一般算法是什么意思?我担心在这里继续讨论这个问题会偏离主题。你能继续聊天吗?