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