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

Python中*args支持接收哪些类型数据?传入列表变量报错是什么原因?

Python *args参数问题解答

1. *args支持接收的参数类型

args 是Python的可变位置参数标识,本身不对传入参数的类型做限制,整数、字符串、列表、字典、自定义类实例等任意类型都可传入。它的核心作用是将调用函数时传入的所有未匹配的零散位置参数,自动打包成一个元组*赋值给args变量,参数的类型合法性由函数内部的处理逻辑决定。

2. 传入列表/元组变量报错的原因

你提供的示例中,如果直接调用add_unlimited(numbers)会触发类型错误,原因如下:

  • 直接传入多个零散数值add_unlimited(23, 45, 23, 56)时,*args会把4个数值打包成元组(23, 45, 23, 56),循环时每次取出的都是整数,和sum变量的整数类型相加无异常。
  • 直接传入列表变量add_unlimited(numbers)时,整个列表会作为单个参数传入,*args打包后的结果是([23, 45, 23, 56],),循环第一次就会执行整数加列表的操作,不符合Python语法规则,因此报错。

3. 正确的列表/元组传参方式

调用函数时在列表/元组变量前加*解包符即可,它会把容器内的元素拆成零散的位置参数传入,和手动传入多个数值的效果完全一致:

def add_unlimited(*args):
    sum = 0
    for n in args:
        sum += n
    print(sum)
    
numbers = [23, 45, 23, 56]  
# 正确调用写法
add_unlimited(*numbers)

运行上述代码会输出正确的求和结果147。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:54:07