传参的顺序:

位置参数 >  *args (动态)> 默认值参数 > **kwargs

def func(**kwargs):

    print(kwargs)
func(a=1,b=2,c=3)
func(a=1,b=2)

结果会以字典的形式输出:

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

#动态参数的另一种传参方式:

def func(*args,**kwargs):
print(args,kwargs)
func('麻花藤','马云',wtf='胡辣汤')
结果:
('麻花藤', '马云') {'wtf': '胡辣汤'}

#字符串也可以打散,(可迭代对象)
fun(*lst)
s = '臣妾做不到'
fun(*s) #字符串也可以打散,(可迭代对象)
结果:('臣', '妾', '做', '不', '到')

注意:

在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.
在形参的位置上的* 表示把接收到的参数组合成一个元组
如果是一个字典, 那么也可以打散. 不过需要用两个*