我开始学习Python,在关于参数的练习中,我有这段代码,我不太明白为什么我们要将sum定义为0,然后将I定义为sum +=
def add(*args):
sum = 0
for i in args:
sum += i
return sum
谢谢你的帮助!
*args
让您以元组的形式发送未定义数量的参数。在函数的开头,在你想要得到和的地方,它显然是0,然后你更新这个值。
您也可以将sum+=i
写成:
sum=sum+i
让我们做一个小例子,你做:
add(1,2,3)
它看起来像:
- 输入函数,sum = 0
- 迭代args(1,2,3)的每个元素。
Iteration 1: sum=0, i =1, sum=sum+i = 1
Iteration 2: sum=1 (updated last iteration doing 0+1) and i 2, we have sum=sum+i=3
Iteration 3 is 3+3 = 6
使用*args
的优势是什么?可以发送任意数量的元素,而无需修改函数。
当至少有一个参数时,我们希望以下内容为真:
add(x1, x2, ..., xn) == x1 + add(x2, ..., xn)
最终,我们到达了这种情况:
add(x1) == x1 + add()
不带参数的add
应该返回什么?由于add(x1)
应该明显等于x1
,我们必须定义add() == 0
。这是因为0是加法的单位:x + 0 == x
对于x
的任何值
由于没有参数时根本不会进入循环,因此我们需要初始化sum = 0
,以便在跳过循环后,return sum
将根据需要返回0
。
循环本身只是一个接一个地添加数字。如果args
为1,2,3,4,则该函数等价于
sum = 0
sum += 1 # 0 + 1 == 1
sum += 2 # 1 + 2 == 3
sum += 3 # 3 + 3 == 6
sum += 4 # 6 + 4 == 10
return sum # return 10