首先還是應該科普下函數參數傳遞機制,傳值和傳引用是什么意思?
函數參數傳遞機制問題在本質上是調用函數(過程)和被調用函數(過程)在調用發(fā)生時進行通信的方法問題。基本的參數傳遞機制有兩種:值傳遞和引用傳遞。
值傳遞(passl-by-value)過程中,被調函數的形式參數作為被調函數的局部變量處理,即在堆棧中開辟了內存空間以存放由主調函數放進來的實參的值,從而成為了實參的一個副本。值傳遞的特點是被調函數對形式參數的任何操作都是作為局部變量進行,不會影響主調函數的實參變量的值。
引用傳遞(pass-by-reference)過程中,被調函數的形式參數雖然也作為局部變量在堆棧中開辟了內存空間,但是這時存放的是由主調函數放進來的實參變量的地址。被調函數對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調函數中的實參變量。正因為如此,被調函數對形參做的任何操作都影響了主調函數中的實參變量。
在python中實際又是怎么樣的呢?
>>先看一個簡單的例子:
fromctypesimport*
importos.path
importsys
deftest(c):
print"testbefore"
printid(c)
c+=2
print"testafter+"
printid(c)
returnc
defprintIt(t):
foriinrange(len(t)):
printt[i]
if__name__=="__main__":
a=2
print"mainbeforeinvoketest"
printid(a)
n=test(a)
print"mainafterfinvoketest"
printa
printid(a)
運行后結果如下:
>>>
mainbeforeinvoketest
39601564
testbefore
39601564
testafter+
39601540
mainafterfinvoketest
2
39601564
以上內容為大家介紹了python培訓之怎么傳參數,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。