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

Python中*args、*kwargs、**kwargs的类型是什么?

关于*args、*kwargs和**kwargs的类型疑问

测试1:打印args和kwargs

def test(*args, **kwargs):
    print(args) # Here
    print(kwargs) # Here

nums = (1, 2, 3, 4)
person = { 
    "name": "John",
    "age": 27,
}
        
test(*nums, **person)

输出结果:

(1, 2, 3, 4)
{'name': 'John', 'age': 27}

测试2:打印args和kwargs

def test(*args, **kwargs):
    print(*args) # Here
    print(*kwargs) # Here

nums = (1, 2, 3, 4)
person = { 
    "name": "John",
    "age": 27,
}
        
test(*nums, **person)

输出结果:

1 2 3 4
name age

测试3:打印**kwargs

def test(*args, **kwargs):
    print(**kwargs) # Here

nums = (1, 2, 3, 4)
person = { 
    "name": "John",
    "age": 27,
}
        
test(*nums, **person)

触发错误:

TypeError: 'name' 不是print()的有效关键字参数

测试4:打印args和kwargs的类型

def test(*args, **kwargs):
    print(type(args)) # Here
    print(type(kwargs)) # Here

nums = (1, 2, 3, 4)
person = { 
    "name": "John",
    "age": 27,
}
        
test(*nums, **person)

输出结果:

<class 'tuple'>
<class 'dict'>

测试5:打印*args、*kwargs、**kwargs的类型

以下三种写法都会触发相同错误:

# 写法1
def test(*args, **kwargs):
    print(type(*args)) # Here

# 写法2
def test(*args, **kwargs):
    print(type(*kwargs)) # Here

# 写法3
def test(*args, **kwargs):
    print(type(**kwargs)) # Here

错误信息:

TypeError: type() takes 1 or 3 arguments


结论:*args、*kwargs、**kwargs没有类型

*和**是Python的语法符号,本身不是变量,自然没有类型:

  • 函数定义时的*args是用来把所有位置参数收集到名为args的元组里;**kwargs是把所有关键字参数收集到名为kwargs的字典里。
  • 调用函数时的*nums是把可迭代对象nums解包成多个位置参数;**person是把字典person解包成多个关键字参数。
  • 当你写print(*args),本质是把args这个元组解包成多个位置参数传给print,不是*args有类型,而是args本身是元组。
  • print(**kwargs)报错是因为把kwargs字典解包成name="John"、age=27这类关键字参数传给print,但print不接受这些关键字参数。
  • type(*args)报错是因为解包args后传给type多个参数,而type只接受1或3个参数;同理type(*kwargs)会把字典的键作为多个位置参数传给type,参数数量不符合要求;type(**kwargs)则是传了无效的关键字参数给type,所以都会报错。

内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:05:26