Python改變引數值的函式

2021-09-19 10:19:04 字數 1583 閱讀 4204

例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...