You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python带*args的自定义求和函数报错:为何sum函数无法处理?

问题分析与解决

嘿,我来帮你搞明白这个小问题~

你写的函数里,*args确实会把所有传入的位置参数收集成一个元组,比如调用sum_all_num(1,2,3)时,args就是(1,2,3)。但问题出在sum(*args)这一步:

  • Python内置的sum()函数的用法是sum(iterable, start=0),它需要第一个参数是可迭代对象(比如元组、列表),而不是一堆单独的数值。
  • 当你写sum(*args)时,相当于把元组args里的元素逐个拆出来传递给sum,也就是变成了sum(1,2,3)——这时候sum会把第一个参数1当成要迭代的对象,但整数是不可迭代的,自然就会抛出错误啦。

正确的写法

你只需要直接把args传给sum就行,因为args本身就是一个可迭代的元组:

def sum_all_num(*args):
    return sum(args)

举个例子

调用这个函数:

print(sum_all_num(1, 2, 3, 4))  # 输出 10

如果要传入一个列表或者元组作为参数,记得用*解包后再传:

nums = [5, 6, 7]
print(sum_all_num(*nums))  # 输出 18

内容的提问来源于stack exchange,提问作者qing zhangqing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:28:52