Python中带函数的参数



我开始学习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)

它看起来像:

  1. 输入函数,sum = 0
  2. 迭代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

最新更新