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")