我正在阅读 John Zelle 的 Python 编程 2ed Ch6。我遇到了一个概念问题:他的示例代码说:
#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()
我认为余额也可以通过新值分配,但结果在我的终端中返回“无”。谁能解释它们之间的根本区别是什么?为什么列表赋值不需要使用return来传递值但仍然会被保存,另一方面,我的test.py在函数之后确实需要一个“返回余额”?