例1:銀行賬戶計算利率——賬戶餘額計算利息的函式
def addinterest(balance, rate):
newbalance = balance * (1 + rate)
balance = newbalance
def main(
): amount = 1000
rate = 0.05
addinterest(amount,rate)
print(amount)
main(
)
>>
> main(
)>1000
發現函式返回值與我們預想不一致,是因為什麼呢?讓我們分析一下
addinterest()的呼叫過程
引數amount, rate 分別賦值為 1000和 0.05
然後呼叫函式 addinterest , 將amount, rate 作為實參傳入,賦值給 形參 balance, rate
執行函式 addinterest ,第一條語句得到乙個新的 newbalance值,之後執行第二條語句,將得到的值賦值給 balance
balance 和 newbalance 引用了相同的值,但是在 test中,卻並沒有起到作用,此時 addinterest函式執行完畢,程式控制返回test中。addinterest中的區域性變數,包括引數被銷毀
但是test函式中的 amount 和 rate 仍然引用初始的值 1000,0.05,所以最後輸出結果為1000
程式可以寫成下面這個形式
def addinterest(balance,rate):
newbalance = balance * (1 + rate)
return newbalance
def test(
): amount = 1000
rate = 0.05
amount = addinterest(amount, rate)
print(amount)
test(
)
例2:處理多個銀行賬戶的程式
改變引數值的函式
Python函式預設引數值
python的函式機制提供了可選引數的功能,可選引數需要放在引數列表的後幾個引數。當呼叫這些函式時,如果不想設定這些引數,就可以不用設定而直接使用函式定義的時候設定的引數預設值。同樣的,呼叫函式的時候也可以重新設定引數,這將覆蓋預設設定的引數。def func x,y 2 print x y fun...
python函式引數改變問題
前幾天在做專案的過程中發現了乙個問題,向函式中傳入乙個list,在函式體內將其賦值給list,對list1操作後發現list也發生了變化,啊 出乎意料。查了一下原因,原來python裡有可變物件和不可變物件之分。只有傳入的是不可變物件時,值才不發生改變,若是可變物件,充當函式引數時要注意了。不可變物...
python 預設引數值 預設引數值
該樓層疑似違規已被系統摺疊 隱藏此樓檢視此樓 最常用的一種形式是為乙個或多個引數指定預設值。這會建立乙個可以使用比定義時允許的引數更少的引數呼叫的函式,例如 def ask ok prompt,retries 4,complaint yes or no,please while true ok in...