python中沒有c++的引用,實參到形參可以傳值,但形參在函式中改變不會影響到實參。一般的變數從函式傳回到形參的呼叫函式時,只能通過return,但如果變數是可變物件(列表或者圖形物件),返回到呼叫函式後,該物件會呈現被修改後的狀態。可能覺得第一第三行自相矛盾,第三行還有點看不明白,我覺得對於可變物件來講,可以從位址的角度來看待,可以看下面例2有助於理解。
def
addinterest1
(all, rate)
: newall = all *(1
+ rate)
defaddinterest2
(all, rate)
: newall = all *(1
+ rate)
return newall
defaddinterest
(all, rate)
:for i in
range
(len
(all)):
all[i]
= all[i]*(
1+ rate)
defmain()
:print
("----例1:單個銀行賬戶金額修改問題----"
)print
("--no return--"
) amount1 =
1000
rate1 =
0.05
amount = addinterest1(amount1, rate1)
print
(amount1)
print
("--return--"
) amount2 =
1000
rate2 =
0.05
amount2 = addinterest2(amount2, rate2)
print
(amount2)
例1中,形參在函式中改變不會影響到實參,一般的變數從函式傳回到形參的呼叫函式時,只能通過return
print
("\n\n----例2:多個銀行賬戶金額修改問題----"
) amounts =
[1000
,500
,200
,957
] rate =
0.05
addinterest(amounts, rate)
print
(amounts)
main(
)
例2中呼叫的 addinterest()函式也同樣沒有return,但你奇怪的發現列印amounts的時候數值竟然改變了,把函式的區域性變數好像帶回來了一樣。我的理解是,其實amounts裡面存的是列表的首位址,傳給形參all的也就是列表的首位址,我們再形參那邊操作改變了位址裡面存在的值,因而在實參這邊列印最終結果時,amounts的數值確實沒有變,但指向的位址裡面的內容已經被形參那邊修改了,形參並沒有改變實參的值(位址),只是改變了位址裡面的內容。 形參和實參
函式的引數分為形參和實參兩種。形參 出現在函式定義中,在整個 函式體內都可以使用,離開該函式則不能使用。實參出現在主調函式中,進入被調函式後,實參變數也不能使用。形參和實參的功能是作 資料傳送 發生函式呼叫 時,主調函式把實參的值傳送給被調函式的形參從而實現主調函式向被調函式的 資料傳送 函式的形參...
形參和實參
形參 全稱為 形式引數 是在定義函式名和函式體的時候使用的引數,目的是用來接收呼叫該函式時傳遞的引數。形參的作用是實現主調函式與被調函式之間的聯絡,通常將函式所處理的資料,影響函式功能的因素或者函式處理的結果作為形參。沒有形參的函式在形參表的位置應該寫void.main 函式也可以有形參和返回值,其...
形參和實參
形參和實參的區別 1 值傳遞 實參是變數,表示式等值。find int x y find z 上面的例子中,z是實參,x是形參。x變z不變。在值傳遞過程中,實參和形參位於記憶體中兩個不同位址中,實參先自己複製一次拷貝,再把拷貝複製給形參。所以,在值傳遞過程中,形參的變化不會對實參有任何的影響。2 位...