我正在閱讀John Zelle的Python編程2ed Ch6。我遇到一個概念問題: 他的示例代碼說:Python的函數返回
#addinterest3.py
def addInterest(balances, rate):
for i in range(len(balances)):
balances[i] * (1 + rate)
def test():
amounts = [1000, 2200, 800, 360]
rate = 0.05
addInterest(amounts, rate)
print(amounts)
test()
與上代碼
「分配到列表中造成它指的是新價值的原有值,實際上 得到清理時Python做垃圾回收」
按照這個思路我嘗試了test.py
def add(balance, rate):
balance = balance * (1 + rate)
def test():
amount = 1000
rate = 0.5
amount = add(amount, rate)
print(amount)
test()
我認爲餘額也可以由一個新的值來分配,但事實證明在我的終端中返回「none」。任何人都可以解釋他們之間的根本區別是什麼? 爲什麼列表分配不需要使用return來傳遞值,但仍然會被保存,另一方面,我的test.py在函數之後需要「返回餘額」?
是你的實際代碼?導致縮進是完全錯誤的。 – Serdalis
'addInterest'中的代碼沒有副作用,也沒有顯式的返回值。具體而言,'balances [i] *(1 + rate)'不會修改任何值。鑑於上面的代碼,這是不正確的:「分配到列表中導致它重新考慮新值。」沒有分配到列表中。這將需要'餘額[我] * =(1 +利率)' – hughdbrown
我只是複製了書上的內容。 – Iseng