python中*args和**kwargs的理解

lurenj / 2024-09-13 / 原文

python中*args和**kwargs的理解

打包(pack):*args是把多个位置参数打包成元组,** kwargs是把多个关键字参数打包成字典。

拆分(unpack):* args是把打包了的参数拆成单个的,依次赋值给函数的形参,** kwargs是把字典的键值拆成单个的,依次赋值给函数的形参。

#*args,*作用,有两个:打包参数和拆分参数

#打包参数,将函数的五个参数打包成一个元组输出
def foo(*args):
    for i in args:
        print(i)
    print(type(args))

foo(1,2,3,4,5)

#拆分参数,将列表或是元组进行拆分
def bar(a, b, c, d=10):
    print(a, b, c, d)


bar(*[1, 2, 3])


# **kwargs,**的作用,分两种:打包参数(pack)和拆分参数(unpack)
'''
打包(pack):*args是把多个位置参数打包成元组,**kwargs是把多个关键字参数打包成字典。
拆分(unpack):*args是把打包了的参数拆成单个的,依次赋值给函数的形参,**kwargs是把字典的键值拆成单个的,依次赋值给函数的形参。
'''
# **kwargs是把多个关键字参数打包成字典
def bar(**number):
    print(number)


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

# **kwargs是把字典的键值拆成单个的,依次赋值给函数的形参。

def bar(a, b, c):
    print(a,b,c)


bar(**{'a': 1, 'b': 2, 'c': 3})