python可迭代参数解包和字典参数解包

       python的函数参数解包中,对于一般的可迭代对象,比如元组、列表等参数,可以直接通过单个星号*对其解包;但是如果是想对字典参数解包,但星号将只会得到字典的keys,这是因为直接对字典迭代实际上只是对字典的键进行迭代,所以如果想要正确的对字典进行解包,就需要使用双星号**。单星号对可迭代对象参数解包后得到元组作为位置参数传入,而双星号**对字典参数解包后作为关键字参数传入。

       可以参考如下示例做进一步理解。注意,python的可变参数中,*args接收多出来的位置参数,而**kwargs接收多出来的关键字参数。 

def f1(a,*args,**kwarags):
    print(a)
    print(args)
    print(kwargs)


a1 = [1,2,3]
d1 = {'a':1,'b':2}

f1(*a1)
[out]:
1
(2,3)
{}


f1(**d1)
[out]:
1
()
{'b':2}

猜你喜欢

转载自blog.csdn.net/S_o_l_o_n/article/details/107510936