提问人:Sree 提问时间:11/20/2019 最后编辑:Sree 更新时间:11/20/2019 访问量:54
在 python 中调用函数后更改变量值
Variable value getting changed after a function call in python
问:
我在 python 函数之间的变量值中观察到一种奇怪的行为,我无法理解其背后的正确原因。我有两个功能,如下所示
def a():
seg_map = np.zeros([224,224],dtype=float)
while True:
print("Calling expand foreground method")
new_seg_map = expandforeground2(seg_map,cams_dict[name],z,seg_result,hypercols)
print(seg_map)
print(np.array_equal(seg_map,new_seg_map))
if np.array_equal(new_seg_map,seg_map):
print('break')
break
seg_map = new_seg_map
def expandforeground2(seg_map,cam_map,layer_no,seg_result,hypercol_result):
threshold = np.amax(hypercol_result) * 0.8
temp_map = seg_map
#do some manipulations on temp_map
return temp_map
现在,在从函数调用函数后,我看到函数中的值被修改为函数中的值,并且始终是。我不明白为什么会这样。我看到了一些相关的问题,但没有一个能解决我的问题。有人可以解释一下这背后的原因以及我应该如何解决这个问题吗?expandforeground2
a
seg_map
a
expandforeground2
np.array_equal(seg_map,new_seg_map)
True
我希望 in 函数的值保持不变,函数的返回值应存储在 .seg_map
a
expandforeground2
new_seg_map
答: 暂无答案
上一个:将数组作为参数传递给方法
下一个:为什么函数列表数据没有收到
评论
seg_map
temp_map = seg_map
temp_map = seg_map.copy()
seg_map
pass by reference
seg_map
return temp_map