1
可能重复:
Python: How do I pass a variable by reference?参数传递的行为在Python函数在Python
我要测试的参数通过以下2个功能传递的行为在Python功能:
In:
def f(a):
a[0]=3
print 'in f ',a
a=[1,2]
print 'ori ',a
f(a)
print 'now ',a
事实证明,“a”在从f()返回后已被修改。
然而,在:
import numpy as np
def f(a):
a=np.array(a,np.float)
print 'in f ',a
a=[1,2]
print 'ori ',a
f(a)
print 'now ',a
我发现, “一” 不选自F返回后改变为numpy的阵列()。
有人可以给一些解释吗?
我敢肯定,十几个副本中的一个可以。 – 2012-01-07 04:43:16
哦,你修改了代码。即使现在'a'也不会被转换,因为您在函数中将名称'a'赋值为一个numpy数组(覆盖旧名称并丢失引用)并且您没有返回它 – joaquin 2012-01-07 04:55:36
简而言之,Python使用[由共享调用] (https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing)。 – icktoofay 2012-01-07 04:58:42