缺省参数,命名参数:
1 def test(a,b,c=33,d=44): #缺省参数:可以写多个,一定要写在最后
2 print(a)
3 print(b)
4 print(c)
5 print(d)
6
7 test(b=11,a=22,d=55) #命名参数:可以不按顺序传参
结果:
22
11
33
55
可变长参数
11 def test1(a,b,*args):
12 print("-"*20)
13 print("a=",a)
14 print("b=",b)
15 print("args=",args)
16 print("-"*20)
17 print(" ")
18
19 test1(11,22,33,44,55)
20 test1(11,22,33)
21 test1(11,22)
结果:
--------------------
a= 11
b= 22
args= (33, 44, 55)
--------------------
--------------------
a= 11
b= 22
args= (33,) #当元组只有一个元素时,这样表示
--------------------
--------------------
a= 11
b= 22
args= () #空元组
--------------------
可变长参数 & 可变长命名参数
28 def test2(a,b,c=3, *args, **kwargs): # *表示可变长参数,**表示可变长命名参数
29 print("-"*20)
30 print("a=",a)
31 print("b=",b)
32 print("c=",c)
33 print("args=",args)
34 print("kwargs=",kwargs)
35 print("-"*20)
36 print(" ")
37
38 test2(11,22,33, 44,55,66, task=99,done=89)
#未命名的多余参数 存入args中 以元组形式存放, 命名的多余参数 存入kwargs中 以字典形式存放。
39
40 A=(44,55,66)
41 B={"name":"mengmei", "age":18}
42 test2(11,22,33, A,B) #A和B均会存入args中
43
44 test2(11,22,33, *A, **B) #拆包元组用* 拆包字典用**
结果:
--------------------
a= 11
b= 22
c= 33
args= (44, 55, 66)
kwargs= {'done': 89, 'task': 99}
--------------------
--------------------
a= 11
b= 22
c= 33
args= ((44, 55, 66), {'name': 'mengmei', 'age': 18})
kwargs= {}
--------------------
--------------------
a= 11
b= 22
c= 33
args= (44, 55, 66)
kwargs= {'name': 'mengmei', 'age': 18}
--------------------