一、函数的动态参数 *args,**kwargs, 形参的顺序
1、你的函数,为了拓展,对于传入的实参数量应该是不固定,
所以就需要用到万能参数,动态参数,*args, **kwargs
1,*args 将所有实参的位置参数聚合到一个元组,并将这个元组赋值给args
(起作用的是* 并不是args,但是约定俗成动态接收实参的所有位置参数就用args)
def sum1(*args):print(args)
sum1(1, 2, ['hello']) #是一个元组(1, 2, ['hello'])
2,**kwargs 将所有实参的关键字参数聚合到一个字典,并将这个字典赋值给kwargs
(起作用的是** 并不是kwargs,但是约定俗成动态接收实参的所有关键字参数就用kwargs)
def fun(*args, **kwargs):print(args)print(kwargs)
fun(1, 2, ['a', 'b'], name='xiaobai', age=18)#结果:#(1, 2, ['a', 'b']) # 位置参数,元组#{'name': 'xiaobai', 'age': 18} # 关键字参数,字典
2、*的用法
在函数的定义时,*位置参数,**关键字参数--->聚合。
在函数的调用(执行)时,*位置参数,**关键字参数--->打散。
实参--->*位置参数--->把位置参数打散成最小的元素,然后一个个添加到args里组成一个元组
l1 = [1, 2, 3]
l2= [111, 22, 33, 'xiaobai']#如果要将l1,l2通过函数整合到一起#方法一(实参不用*):
def func1(*args):return args[0] + args[1]print(func1(l1, l2)) #[1, 2, 3, 111, 22, 33, 'xiaobai']
#方法二(实参用*):实参使用*打散
def func1(*args):returnargsprint(func1(*l1, *l2)) #(1, 2, 3, 111, 22, 33, 'xiaobai')
实参--->**关键字参数--->把关键字参数打散成最小的元素,然后