-
位置參數(shù)
位置參數(shù)就是普通的參數(shù)變量按一定順序排列,在定義的時候只給變量名,在調(diào)用函數(shù)時,輸入的參數(shù)值也要按照這個順序輸入:- 定義:
def get_reduce(x,y): return x-y
- 調(diào)用:
注意:調(diào)用時位置參數(shù)為必填參數(shù)>>> get_reduce(98,88) 10
-
默認(rèn)參數(shù)
默認(rèn)參數(shù)就是在定義函數(shù)的時候給該參數(shù)一個默認(rèn)值,當(dāng)調(diào)用給函數(shù)時不給該參數(shù)的值,默認(rèn)使用默認(rèn)值:- 定義:
>>> def get_lifang(x,n=3): ... sum=1 ... while n>0: ... n-=1 ... sum*=x ... return sum
- 調(diào)用:
注意:默認(rèn)參數(shù)盡量不要用list,因?yàn)樗强勺儗ο螅?dāng)多次調(diào)用時,這次會調(diào)用上次產(chǎn)生的值,如果需要可以將可變對象的默認(rèn)值定義為>>> get_lifang(3) 27
None
-
可變參數(shù)
參數(shù)數(shù)量可以變化的參數(shù),在定義時用*
標(biāo)識:- 定義:
>>> def get_sum(*n): ... sum=0 ... for i in n: ... sum+=i ... return sum ...
- 一般參數(shù)調(diào)用:
>>> get_sum(55,77,88) 220
- 特殊參數(shù)調(diào)用:(當(dāng)參數(shù)為多個元素的集合時,用
*
標(biāo)注,如下:)
實(shí)質(zhì)上,參數(shù)在函數(shù)內(nèi)部是以一個>>> l=[99,34,66,44] >>> get_sum(*l) 243
tuple
的元素存在 -
關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)針對的是dict
,定義的時候用**
標(biāo)識- 定義:
>>> def get_info(**kw): ... if 'body' in kw: ... print('system is bad') ... elif 'peter' in kw: ... print(kw['peter']) ...
- 調(diào)用:
>>> d={'peter':88,'ami':77,'baby':99} >>> get_info(**d) 88
-
命名關(guān)鍵字參數(shù)
命名關(guān)鍵字參數(shù)是在關(guān)鍵字參數(shù)的基礎(chǔ)上,硬性要求關(guān)鍵字的名字,定義時用*
作為參數(shù)將其他關(guān)鍵字隔開- 定義:
>>> def to_info(p,c,*,course,age): ... print(p,c,course,age) ...
- 調(diào)用:
注意:當(dāng)命名關(guān)鍵字前有可變參數(shù)時,>>> to_info('peter',99,course='English',age=22) peter 99 English 22
*
分隔不需要 -
參數(shù)排列順序
([ 位置參數(shù)],[默認(rèn)參數(shù)],[可變參數(shù)],[命名關(guān)鍵字參數(shù)],[關(guān)鍵字參數(shù)])
需要說明的是:它們可以組合使用,例如即是默認(rèn)參數(shù),又是命名關(guān)鍵字參數(shù)