python中,函數參數由實參傳遞給形參的過程,是由參數傳遞機制來控制的。根據實際參數的類型不同,函數參數的傳遞方式分為值傳遞和引用傳遞(又稱為地址傳遞)。
Python函數參數的值傳遞機制
所謂值傳遞,實際上就是將實際參數值的副本(復制品)傳入函數,而參數本身不會受到任何影響。
下面程序演示了函數參數進行值傳遞的效果:
defswap(a,b):
#下面代碼實現a、b變量的值交換
a,b=b,a
print("swap函數里,a的值是",\
a,";b的值是",b)
a=6
b=9
swap(a,b)
print("交換結束后,變量a的值是",\
a,";變量b的值是",b)
運行上面程序,將看到如下運行結果:
swap函數里,a的值是9;b的值是6
交換結束后,變量a的值是6;變量b的值是9
從上面的運行結果來看,在swap()函數里,a和b的值分別是9、6,交換結束后,變量a和b的值依然是6、9。從這個運行結果可以看出,程序中實際定義的變量a和b,并不是swap()函數里的a和b。
Python函數參數的引用傳遞
如果實際參數的數據類型是可變對象(列表、字典),則函數參數的傳遞方式將采用引用傳遞方式。需要注意的是,引用傳遞方式的底層實現,采用的依然還是值傳遞的方式。
下面程序示范了引用傳遞參數的效果:
defswap(dw):
#下面代碼實現dw的a、b兩個元素的值交換
dw['a'],dw['b']=dw['b'],dw['a']
print("swap函數里,a元素的值是",\
dw['a'],";b元素的值是",dw['b'])
dw={'a':6,'b':9}
swap(dw)
print("交換結束后,a元素的值是",\
dw['a'],";b元素的值是",dw['b'])
運行上面程序,將看到如下運行結果:
swap函數里,a元素的值是9;b元素的值是6
交換結束后,a元素的值是9;b元素的值是6
從上面的運行結果來看,在swap()函數里,dw字典的a、b兩個元素的值被交換成功。不僅如此,當swap()函數執行結束后,主程序中dw字典的a、b兩個元素的值也被交換了。
這很容易造成一種錯覺,即在調用swap()函數時,傳入swap()函數的就是dw字典本身,而不是它的復制品。
以上內容為大家介紹了python函數如何傳遞參數?希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。