1.命名关键字参数(了解)
在定义函数时,*后定义的参数,如下所示,称之为命名关键字参数
特点:
命名关键字实参必须按照key=value的形式为其传值
def func(x,y,*,a,b): #其中,a和b称之为命名关键字参数
print(x,y)
print(a,b)
#func(1,2,3,4) #报错,命名关键字实参必须按照key=value的形式为其传值
func(1,2,b=33,a=44)
#func(1,2) #报错,要为命名关键字形参传值
def func(x,y,*,a,b=333): #其中,a和b称之为命名关键字参数,b=333是为命名关键字赋了默认值
print(x,y)
print(a,b)
def func(x,y,*,b=333,a): #注意 b在a前面,a和b称之为命名关键字参数 b=333是为命名关键字赋了默认值,可以这样定义
print(x,y)
print(a,b)
func(1,2,a=44)
2.组合使用(了解)
形参顺序:位置形参,默认参数,*args,命名关键字形参,**kwargs
组合定义使用范例:
def func(x,y=2,*args,z,**kwargs):
print(x,y,args,z,kwargs)
实参混用顺序
def func(x,y,z,a,b,c):
print(x,y,z,a,b,c)
func(111,y=222,*[333,444],**{'b':555,'c':666}) #实参中遇到*和**需要先打散
#func(111,y=222,333,444,b=555,c=666) #打散后报错(位置实参必须在关键字实参前)
如何解决打散后传参
func(111,y=222,333,444,b=555,c=666)#打散后报错(位置实参必须在关键字实参前)
删除y=222,放到*for循环后
func(111,333,444,a=222,b=555,c=666)
func(111,*[333,444],a=222,**{'b':555,'c':666})#先打散 func(111,333,444,a=222,b=555,c=666)
func(111,*[333,444],a=222,**{'b':555,'c':666},d=777)#先打散 func(111,333,444,a=222,b=555,c=666,d=777)