python函数可变参数

自动组包解包 https://ceshiren.com/t/topic/30328

1.可变参数 *args

*args作为形参,接收不确定个数的位置参数(*args将接收到的任意多实际参数放在元组中)

举例:

def fun(*args):
    print(args)
    print(*args) # 解包
    print(type(args))
    for i in args:
        print(i)

fun(1,2,3)

输出

(1, 2, 3)
1 2 3
<class 'tuple'>
1
2
3

2.可变关键字参数 **kwargs

kwargs作为形参,接收不确定个数的关键字参数(*kwargs将接收到的任意多实际参数放在字典**中)

举例:

def fun(**kwargs):
    print(kwargs)
    # print(**kwargs) #会报错TypeError: 'a' is an invalid keyword argument for print()
    print(*kwargs)  #对字典的key解包,结果为: a b c
    for k,v in kwargs.items():
        print(k,v)

fun(a=1,b=2,c=3)

输出

{'a': 1, 'b': 2, 'c': 3}
a 1
b 2
c 3

3.混合参数

当定义函数时,参数列表中出现了多种类型的参数,定义时需要注意参数的定义顺序,如果顺序使用不正确,在调用函数时,可能会报错。

正确顺序的定义为:位置参数,可变位置参数,默认值参数,可变关键字参数

def fun(name1,*args,age=1,**kwargs):
   pass