Python函数中的可变长参数(*args,**kwargs)

发布时间 2023-05-28 15:55:32作者: moon_p
1、形参中含有*
*形参名:用来接收溢出的位置实参,溢出的位置实参会被*保存成元组的格式然后赋值给紧跟后面的形参名
    *后面跟的可以是任意名字,但是约定俗称只能是args
def func(a,b,*c):
  print(a)
  print(b)
  print(c)
func(1,2,3,4,5,6,7)

 

2、形参中含有**

**形参名:用来接收溢出的关键字实参,溢出的位置实参会被**保存成字典的格式然后赋值给紧跟后面的形参名
    **后面跟的可以是任意名字,但是约定俗称只能是kwargs
def func(a,b,**c):
  print(a)
  print(b)
  print(c)
func(1,2,q=1,w=2)

 

3、实参中带*

*可以用于实参中,实参中带*,先*后的值打散成位置实参
def func(a,b,c):
  print("a:{} b:{} c:{}".format(a,b,c))
func(*[1,2,3])
//相当于func(1,2,3)

 

4、形参中与实参中全部带*

def func(a,b,*l):         //相当于func(1,2,(3,4,5,6,7,8))
  print(a)
  print(b)
  print(l)
func(1,2,*[3,4,5,6,7,8])    //相当于func(1,2,3,4,5,6,7,8)
 
 
5、实参中带**
**用在实参中,**后面只能是字典,实参中带**,先**后的值打散成位置实参
def func(x,y,z):
  print(x,y,z)
  dicts1 = {"x":1,"y":2,'z':3}
func(*dicts1)      //相当于for循环遍历dicts1  func("x","y","z")
func(**dicts1)    //相当于x=1,y=2,z=3

 

6、形参实参中带**

def func(a,b,**kwargs):          //kwargs={'x': '11', 'y': '22'}
  print(a)                          //1
  print(b)                          //1
  print(kwargs)                  //{'x': '11', 'y': '22'}

dic1 = {"b":"1","a":"1","x":"11","y":"22"}
func(**dic1)                         //func(b="1",a="1",x="11",y="22")