'''
函数的参数传递进阶:
在python中,所有的函数,在传入参数的时候,参数都会变成*args和**kwargs两种形态
1.*args表示以元组的形态
*表示参数基于元组的形态进行接受和解析。根本意义上就是拆包。将元组中的元素拆包成不同的数据,转为参数传入
*可以接收无限长度的参数。因为所有的参数都存储在一个元组之中,通过*解包实现参数的解析,再传入函数之中
*解析元组后,按照元素顺序依次进行传参。无法修改传入的参数顺序。
*叫做不定长不定值传参。不定义参数的长度,也不定义参数的对应值的方式进行传参。
*只能用于解析元组,*在哪里,就在哪里解析元组
2.**kwargs表示以字典的形态
所有函数的参数本身都是提前固定好的。所以所有参数都可以根据参数名称来实现类似键值对的形态进行传入
key表示形参,value表示实参。在传参的时候我们可以基于字典的形态来实现参数的定值传参.
**表示基于字典的形态进行解包
** key一定要与形参一直,value表示对应形参的值
**必须要将所有的参数值以及形参名称全部都定义明确。但是定义的顺序可以打乱
**叫做定值不定长传参
**在哪里,解包就在哪里
*args和**kwargs都是内置的关键字。定义形参的时候,如非必要,不适用这两个做参数名称。
'''
# def demo(a,b,c,d,e):
# pass
#
# def demo_plus(a):
# print(*a)
#
# # *args方式实现参数传递
# args = (1,2,3,4,5) #定义一个元组
#
# demo(*args) #实际传入的就是元组解包之后的1,2,3,4,5总计5个数据传入
#
# demo_plus(args)
# **kwargs实现参数传递
di = {
'a':100,
'b':50
}
demo_dict(**di) #解包后的结果a=100,b=50