多参数python2.7的简单函数

2024-09-29 23:21:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习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号的事吗?在


Tags: 函数代码testratedef编程amountprint
3条回答

关键词是return。Return基本上用于将函数中的值返回给变量(在第二个代码中,变量是amount)。在

在1中,您没有返回任何内容,这就是为什么{}不是您想要的结果。在

在第二个代码中,您是returningnewBalance的值。变量amount现在与函数中的newBalance的值相同。在

所以在第一段代码中,做addInterest(amount, rate)什么也做不了。它不返回任何东西,所以它没有任何用处。你在第二个功能中所做的是正确的。在

检查How do I pass a variable by reference?上的漂亮答案

    self.variable = 'Original'
    self.Change(self.variable)

def Change(self, var):
    var = 'Changed'

这是因为在addInterest中修改的balance对象与传递给函数的amount对象不同。简而言之,修改传递给函数的对象的本地副本,以便原始对象的值保持不变。如果在python shell中运行以下代码,则可以看到:

>>> def addInterest(balance, rate):
...     print (balance)
...     newBalance = balance * (1 + rate)
...     balance = newBalance
... 
>>> amount = 1000
>>> rate = 0.05
>>> print id(amount)
26799216
>>> addInterest(amount, rate)
1000
>>> 

id函数返回一个对象的标识,该标识可用于测试两个对象是否相同。在

相关问题 更多 >

    热门问题