下面的函数在每次调用时更新数组的值:
import numpy as np
def disc(vectors, i, ptr, total):
if ptr[i] < 0:
return total
else:
total+=vectors[i]
return disc(vectors, ptr[i],ptr,total)
testvec=np.array([[0,0],[1,0],[0,0],[0,0],[1,-1],[0,-1],[1,-1],[0,-1],[0,0]])
ptr=np.array([-10,2,-6,-10,2,2,4,4,-10])
t=np.array([0,0])
print(disc(testvec,7,ptr,t))
print(t)
print(disc(testvec,1,ptr,t))
也就是说,在调用数组t之后,它的值被更新了。是否可以在函数中将t重置为[0,0],或者根本不改变值?
对于上下文,我正在实现一个用于渗透的 Package 算法。该函数对树上的向量求和,更多细节请参见https://arxiv.org/pdf/cond-mat/0101295.pdf。
1条答案
按热度按时间qoefvg9y1#
在您的特定情况下,如果您不希望修改变量,您可以不修改它:
更一般地说,您可以将函数的参数 Package 在
copy.deepcopy
中,以确保只传递副本,而不会修改原始变量。