天天看點

《python 與資料挖掘 》一 3.2 函數參數

python中的函數參數主要有3種形式,分别是:

1)位置或關鍵字參數。

2)任意數量的位置參數。

3)任意數量的關鍵字參數。

我們在閱讀函數時,需要注意函數的參數清單,沒有帶預設值的參數需要我們往函數傳遞值,而帶預設值的參數可以不傳遞值。

1.位置或關鍵字參數

這種參數是python預設的參數類型,函數的參數定義為該類參數後,可以通過位置參數,或者關鍵字參數的形式傳遞參數,例如:

可以使用位置參數

fun2(1,2,3) # 輸出1,2,3

可以使用關鍵字參數,關鍵字參數間的順序沒有關系

fun2(a=1,c=3,b=2) # 輸出1,2,3

也可以混合使用位置參數和關鍵字參數,但位置參數必須在關鍵字參數的前面

fun2(1,c=3,b=2) # 輸出1,2,3

func(a=1,2,3) # 報錯

函數參數清單中可以定義預設參數,但python不允許帶預設值的參數定義在沒有預設值的參數之前,因為這樣寫是有歧義的。假設允許定義:

def fun3(a=1,b):

那麼我調用fun3(2),雖然程式員希望a=1,b=2,但python的位置參數是按順序指派的,程式會先把2指派給a,進而沒有參數指派給b了,是以程式會報錯。如果

改成:

def fun3(a,b=2):

調用fun3(1)時,按照順序,先将1指派給a,雖然後面沒有參數傳入,但b已經有預設值,是以這樣寫程式沒有歧義,輸出1,2。

2.任意數量的位置參數

任意數量的位置參數在定義的時候是需要一個星号字首來表示的,在傳遞參數的時候,可以在原有參數的後面添加0個或多個參數,這些參數将會被放在元組内并傳入函數。任意數量的位置參數(一個星号字首)必須定義在位置或關鍵字參數(無須星号)之後,且在任意數量的關鍵字參數(兩個星号字首)之前。如:

3.任意數量的關鍵字參數

任意數量的關鍵字參數在定義的時候,參數名稱前面需要有兩個星号(**)作為字首,這樣定義出來的參數,在傳遞參數的時候,可以在原有的參數後面添加任意0個或多個關鍵字參數,這些參數會被放到字典内并傳入到函數中。帶兩個星号字首的參數必須定義在所有帶預設值的參數之後。

繼續閱讀