Python中*args求和函数sum初始化为0及sum += i的作用是什么
代码逻辑解释
你这段代码的作用是定义一个可以接收任意多个数值参数的求和函数,两个操作的逻辑分别如下:
- 为什么要将
sum初始化为0
累加操作需要一个变量存储中间结果和最终结果,如果没有提前声明sum = 0,第一次执行sum += i时Python找不到sum变量的定义,会直接抛出NameError报错。
另外加法运算的单位元是0,初始值设为0不会改变最终累加的结果:如果初始值设置为其他数值,比如1,最终返回的结果会比所有参数的实际总和多1,得到错误的计算结果。
小提示:不建议用sum作为变量名,会覆盖Python内置的sum()求和函数,后续如果需要调用内置求和功能会出现异常,换成total这类变量名更合适。 - 为什么循环中要执行
sum += i
函数参数里的*args会把你调用函数时传入的所有位置参数打包成一个元组,比如调用add(1,2,3)时,args的实际值就是(1,2,3)。
这里的for循环会依次取出元组里的每一个元素,加到存储累加结果的sum变量上:比如上面的调用示例,初始sum=0,第一次循环取1,sum变成0+1=1;第二次取2,sum变成1+2=3;第三次取3,sum变成3+3=6,最终返回的6就是三个参数的求和结果。
简化写法参考
Python自带了内置的sum()函数可以直接对可迭代对象求和,你的功能可以简化为如下写法,不需要手动写累加逻辑:
def add(*args): return sum(args)
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

