目标是通过函数调用更新列表,该调用带有两个参数,一个是要修改的列表。
在以下示例中,j
是要由函数f()
修改的列表:
import numpy as np
j = np.log(np.array([[0.3],[0.4]]))
k = np.log(np.array([[0.1],[0.3]]))
def f(a,b):
a = np.exp(a) - np.exp(b)
f(j,k)
print(j)
预期的解决方案是:
[[ 0.2]
[ 0.1]]
然而,它产生:
[[-1.2039728 ]
[-0.91629073]]
这是j
的原始值。也就是说,j
从未被修改过。
但如果使用+=
代替-a
技巧,
def f(a,b):
a += -a + np.exp(a) - np.exp(b)
然后输出是预期的解决方案。
因此,问题是:赋值运算符是否覆盖Python函数中的参数引用?
如果使用j
或=
,+=
的行为会发生变化,是否有解释?