1.位置參數(shù)
- 先定義一個(gè)含三個(gè)位置參數(shù)的函數(shù)”fun”.
def fun(a,b,c):
print(a,b,c)
執(zhí)行結(jié)果
fun(1,2,3)
1 2 3
a,b,c三個(gè)為位置參數(shù),何為位置參數(shù)财剖,就是他們的位置是嚴(yán)格對(duì)照的宙项,1就是a派阱,2就是b宜咒,3就是c,順序不能亂赘娄,不然就傳給另一個(gè)形參了。
- 位置參數(shù)也可以列表的形式的傳入宏蛉,然后拆開list放到每個(gè)位置上去
- 執(zhí)行結(jié)果
l=[1,2,3]
fun(*l)
1 2 3
2.關(guān)鍵字參數(shù)
- 在剛剛講過位置參數(shù)的對(duì)順序很嚴(yán)格遣臼,如果我們不想按照順序,我們還可以定義關(guān)鍵字拾并,指定實(shí)參所要給的形參是哪個(gè)
仍然使用之前的fun函數(shù)揍堰,但是參數(shù)換種形式:- 執(zhí)行結(jié)果
fun(b=2,c=3,a=1)
1 2 3
3.可變參數(shù)
- 有些時(shí)候我們也不知道參數(shù)具體有多少個(gè)鹏浅,這個(gè)時(shí)候我們可以把參數(shù)定義成可變參數(shù)來接受任意多的參數(shù)
def fun(*args):
print(args)
fun(1,2,3)
(1, 2, 3)
在這里args是元組
當(dāng)然,可變參數(shù)也可以與位置參數(shù)聯(lián)用
def fun(a,*args):
print(a,args)
fun(1,2,3)
1 (2, 3)
或者
def fun(a,*args):
print(a,args)
l=[2,3]
fun(1,*l)
4.可變關(guān)鍵字參數(shù)
- 定義一個(gè)函數(shù)
def fun(a,**kwargs):
print(a,kwargs)
fun(1,b=2,c=3)
1 {'c': 3, 'b': 2}
可以看出關(guān)鍵字參數(shù)kwargs是以字典形式返回的屏歹。
當(dāng)然也可以像之前可變參數(shù)那樣隐砸,只不過傳進(jìn)的是字典,而且一顆星變?yōu)榱藘深w星蝙眶。
def fun(a,**kwargs):
print(a,kwargs)
d={"b":2,"c":3}
fun(1,**d)
1 {'b': 2, 'c': 3}
args和kwargs這兩個(gè)只是名字季希,不一定非要寫成這樣。
另外幽纷,args和*kwargs在各種源碼會(huì)經(jīng)常見到式塌,非常普遍。