python--*args和**kwargs在传递实参时的用法和区别

*解包:是对迭代对象进行解包,比如说列表

**解包:在传递实参时,可以通过 ** 对字典对象进行解包

 

*解包

在传递实参时,可以通过 * 对迭代对象进行解包

def fun(a, b, *arg):
    print(a, b, arg)
ls = [1, 2, 3, 4, 5, 6]
fun(*ls)   # => fun(1,2,3,4,5,6)
运行结果:

1 2 (3, 4, 5, 6)
def fun(a, *arg):
    print(a, arg)
ls = [1, 2, 3, 4, 5, 6]
fun(*ls)   # => fun(1,2,3,4,5,6)
运行结果:
1 (2, 3, 4, 5, 6)
 

 

**解包

在传递实参时,可以通过 ** 对字典对象进行解包

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
def fun(a,b, **kwargs):
    print(a,b,kwargs)

fun(**d) # => fun(a=1,b=2,c=3,d=4)
运行结果:
1 2 {'c': 3, 'd': 4}

 

posted @ 2021-07-18 17:35  WJ-HAHA  阅读(55)  评论(0编辑  收藏  举报