函數參數傳遞機制問題本質上是調用發生時,調用函數(過程)與被調用函數(過程)之間的通信方法問題。有兩種基本的參數傳遞機制:值傳遞和引用傳遞。
在值傳遞(passl-by-value)的過程中,被調用函數的形參被當作被調用函數的局部變量,即在堆棧中開辟壹個內存空間來存儲主音函數放入的實參的值,從而成為實參的副本。值傳遞的特點是調諧函數對形式參數的任何操作都是作為局部變量進行的,不會影響主音函數實參數變量的值。
在按引用傳遞的過程中,雖然被調用函數的形參也作為局部變量在棧中開辟內存空間,但此時存儲的是調用函數放入的實參變量的地址。被調用函數對形參的任何操作都被視為間接尋址,即通過堆棧中存儲的地址訪問主調用函數中的實參變量。正因為如此,無論調優函數對形參做什麽,都會影響主音函數中的實參變量。
在python中實際上是什麽樣的?
讓我們看壹個簡單的例子:
從哪裏?ctypes?進口?*
進口?os.path
進口?[計]系統復制命令(system的簡寫)
def?測試(c):
打印?“測試?之前?”
打印?身份證(c)
c+=2
打印?“測試?之後?+"
打印?身份證(c)
回歸?c
def?打印(t):
為了什麽?我?在?範圍(len(t)):
打印?t[i]
如果?__name__=="__main__ ":
a=2
打印?“總管?之前?調用?測試"
打印?id(a)
n =測試(a)
打印?“總管?afterf?調用?測試"
打印?a
打印?id(a)運行的結果如下:
& gt& gt& gt?
主要?之前?調用?試驗
測試?之前?
測試?之後?+
主要?afterf?調用?試驗
39601564