可变参数 也叫 多值参数
*args 会把所有的 非键值对(位置参数) 参数吸收 变为一个 元组
**kwargs 会把所有的 键值对 参数吸收 变为一个 字典
def demo1(*args, **kwargs):
print(args)
print(kwargs)
# *args 会把2, 3, 4, 5 变为一个元组
# **kwargs 会把name="小明", age=23 变为一个字典
def demo(num, *args, **kwargs):
print(num) # 会把第一个参数1 吸收
print(args)
print(kwargs)
# 如果直接传args,kwargs会直接当作 位置参数传进去
# demo1(args,kwargs) # 运算结果如下
# ((2, 3, 4, 5), {'name': '小明', 'age': 23})
# {}
# 解包为 位置参数 和 键值对
demo1(*args, **kwargs) # 效果和demo一样
demo(1, 2, 3, 4, 5, name="小明", age=23)