在 Python 中具有函数的参数

Args with function in Python

我开始学习Python在args的练习中,我有这块代码,我不太明白为什么我们会定义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 return 没有参数?由于 add(x1) 显然应该等于 x1,因此我们必须定义 add() == 0。这是因为 0 是加法的 标识 x + 0 == x 对于 x 的任何值。

因为你的循环在没有参数的情况下根本不会进入,所以我们需要初始化sum = 0,这样我们跳过循环后,return sum会return0 根据需要。

循环本身只是将数字一个接一个地相加。如果 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