我正在学习Zelle的Python编程,但在函数方面有点困难。在
我们得到了这个:
def addInterest(balance, rate):
newBalance = balance * (1+rate)
balance = newBalance
def test():
amount = 1000
rate = 0.05
addInterest(amount, rate)
print amount
test()
此代码无法打印1050作为输出。但以下是成功的:
^{pr2}$细微的差别在于addInterest函数的第3行。泽尔解释了这一点,但我还没有掌握窍门。你能解释一下为什么1号代码-几乎是同一的-不能做2号的事吗?在
关键词是
return
。Return基本上用于将函数中的值返回给变量(在第二个代码中,变量是amount
)。在在1中,您没有返回任何内容,这就是为什么{}不是您想要的结果。在
在第二个代码中,您是
returning
newBalance的值。变量amount
现在与函数中的newBalance
的值相同。在所以在第一段代码中,做
addInterest(amount, rate)
什么也做不了。它不返回任何东西,所以它没有任何用处。你在第二个功能中所做的是正确的。在检查How do I pass a variable by reference?上的漂亮答案
这是因为在
addInterest
中修改的balance
对象与传递给函数的amount
对象不同。简而言之,修改传递给函数的对象的本地副本,以便原始对象的值保持不变。如果在python shell中运行以下代码,则可以看到:id
函数返回一个对象的标识,该标识可用于测试两个对象是否相同。在相关问题 更多 >
编程相关推荐