夜光序言:
如果说真实是残酷的,谎言绝对是温柔的吧。
——所以,温柔是谎言。
正文:改变参数值的函数
改变参数值的函数
函数通过参数与调用程序传递信息。
例子1:银行账户计算利率
账户余额计算利息的函数:
期待效果:为余额1000的账户上增加5%,那么
账户余额变为1050
然而实际输出为。。。
注意:虽然形参和实参名字相同,但他们是不同的变量
参数赋值使得addInterest()中变量amount和rate引用了实参的值
分析可知:函数的形参只接收了实参的值,给形参赋值并不影响实参。
Python可以通过值来传递参数。
方法:改变函数addInterest() 返回一个 newBalance,用这个值更新test() 中的amount
运行结果:1050.0
例子2:处理多个银行帐户的程序
实现:
用列表存储帐户余额信息,列表中的第一个帐户余额:
下一个位置的值:
对列表位置0,1,… ,length-1 的值使用循环进行余额计算
代码:
运行结果:
函数不能修改变量本身(即amounts)
Test()中amounts是一个包含四个整数类型值的列 表 对 象 , 以 实 参 的 形 式 传 递 给 函 数addInterest()的形参balances。
test()向函数addIntertest()传递列表参数图
addIntertest()中列表被修改:从0到length-1范围执行循环,并更新balances的值
变量amounts没有改变,它仍然指向的是调用函数addInterest()之前同一个列表
函数addInterest()结束时,存储在amounts中的列表存储了新的balances值
旧值在Python垃圾数据回收的时候被清除掉
夜光总结:Python的参数是通过值来传递的
如果变量是可变对象(如列表或者图形对象),返回到调用程序后,该对象会呈现被修改后的状态。