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

为何sum(args)可正常运行而sum(*args)会报错?

问题解析:为什么要去掉args前的*符号?

首先得搞懂*args在函数里的作用:当你定义函数用*args时,Python会把你传入的所有位置参数打包成一个元组。比如你调用super_func(1,2)时,args就是(1,2)这个元组。

然后看sum()函数的要求:它的第一个参数必须是可迭代对象(比如列表、元组这类能逐个取出元素的东西),可选第二个参数是求和的起始值。

那原来的代码return sum(*args),这里的*是把args这个元组解包,相当于调用sum(1,2)。这时候sum会把第一个参数1当成要遍历的可迭代对象,但int类型根本不是可迭代的,自然就报TypeError: 'int' object is not iterable的错。

而改成return sum(args)后,你直接把元组(1,2)传给sum,sum就能正常遍历这个元组里的元素,把1和2加起来得到3,问题就解决了。

内容的提问来源于stack exchange,提问作者Yıldıray Y

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:03:32