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