我的书中有一个例子,它应该是一个程序,在多个账户上增加利息后计算新的余额:
def addInterest(balances, rate):
for i in range (len(balances)):
balances[i] = balances[i] * (1 + rate)
def test():
amounts = [1000, 2200, 800, 360]
rate = 0.05
addInterest(amounts, rate)
print(amounts)
test()
输出为[1050.0、2310.0、840.0、378.0]
addInterest结尾没有返回调用,因此 为什么不打印(金额)只打印初始定义的金额,即[1000、2200、800、360]?你知道吗
实际上,当没有指定返回时,默认情况下会返回
None
。但是,为什么你会得到其他的价值观呢?因为当你这么做的时候您正在修改列表
balances
的值。你知道吗因此,您正在执行以下操作:
amounts = [1000, 2200, 800, 360]
addInterest
,将列表作为参数传递。在此函数中,您正在修改此列表的内容。您不返回任何内容,但列表已被修改。你知道吗请看这篇关于data model的文章,特别是关于可变性的部分。你知道吗
下面是一个列表如何可变的示例
调用
addInterest
函数时,将amounts
数组作为参数传递,它修改了该数组。下面是另一个例子,展示了这是如何发生的现在在解释器中测试
您可以看到,函数的返回值是
None
,我们将其存储在名为x
的变量中。但是这个函数还有一个副作用,即改变传递给它的listarr
的值。你知道吗最后,让我们看一个类似您的示例,其中数组是在函数中定义的。你知道吗
在口译员那里查一下
希望这能消除任何混乱。你知道吗
函数不返回任何内容,但会打印结果。如果你这么做了:
那么
test()
将是None(这是函数的默认返回值)。你知道吗如果希望函数返回结果,则必须将打印更改为如下返回:
另外,在函数中修改列表时要小心。参见示例https://stackoverflow.com/a/17686659/4709400
相关问题 更多 >
编程相关推荐