python 引數的組合

2021-09-09 01:59:58 字數 1448 閱讀 6711

現在我們知道python定義函式的引數型別有:

必選引數

預設引數

可變引數

關鍵字引數

但是在我們日常中我們是可以組合使用這些引數的:但是使用的時候,引數定義是有順序的

定義的順序必須是:必選引數,預設引數,可變引數,關鍵字引數

1,17,68);font-style:normal;font-varian比如定義乙個函式,包含上述4種引數:

def func(a, b, c=0, *args, **kw):

print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw

在函式呼叫的時候,python直譯器自動按照引數位置和引數名把對應的引數傳進去。

>>> func(1, 2)

a = 1 b = 2 c = 0 args = () kw = {}

>>> func(1, 2, c=3)

a = 1 b = 2 c = 3 args = () kw = {}

>>> func(1, 2, 3, 'a', 'b')

a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}

>>> func(1, 2, 3, 'a', 'b', x=99)

a = 1 b = 2 c = 3 args = ('a', 'b') kw =

最神奇的是通過乙個tuple和dict,你也可以呼叫該函式:

>>> args = (1, 2, 3, 4)

>>> kw =

>>> func(*args, **kw)

a = 1 b = 2 c = 3 args = (4,) kw =

所以,對於任意函式,都可以通過類似func(*args, **kw)的形式呼叫它,無論它的引數是如何定

義的。

小結python的函式具有非常靈活的引數形態,既可以實現簡單的呼叫,又可以傳入非常複雜的引數。

預設引數一定要用不可變物件,如果是可變物件,執行會有邏輯錯誤!

要注意定義可變引數和關鍵字引數的語法:

*args 是可變引數,args接收的是乙個tuple;

**kw 是關鍵字引數,kw接收的是乙個dict。

以及呼叫函式時如何傳入可變引數和關鍵字引數的語法:

可變引數既可以直接傳入: func(1, 2, 3) ,又可以先組裝list或tuple,再通過 *args 傳

入: func(*(1, 2, 3)) ;

關鍵字引數既可以直接傳入: func(a=1, b=2) ,又可以先組裝dict,再通過 **kw 傳

入: func(**) 。

使用 *args 和 **kw 是python的習慣寫法,當然也可以用其他引數名,但最好使用習慣用法

Python引數組合

引數定義的順序必須是 必選引數 預設引數 可選引數 命名關鍵字引數 關鍵字引數 1 a,b為必選引數 c為預設引數 args為可變引數 kw為關鍵字引數 2def f1 a,b,c 0,args,kw 3print a b b,c args args,kw kw 45 引數定義的順序必須是 必選引數...

實現引數的多項組合

在api中經常看到乙個引數有多個選項,並且所有的選項都可以組合使用。今日看了乙個程式,頓悟!首先在乙個類的定義裡面宣告乙個enum,專案為你提供的選項。比如 class cmyclass enum 其他成員 注意這裡面的選項除了task all按位與的時候結果一定要為0 比如這裡的task bar可...

Day5 07 函式的引數 引數組合

現在我們學完了位置引數 預設引數 可變引數 關鍵字引數 命名關鍵字引數五種引數型別。在python中定義函式,可以使用這五種引數進行組合。但是引數定義的順序必須是 必選引數 預設引數 可變引數 命名關鍵字引數和關鍵字引數 def f1 a,b,c 0,pp,kw print a,b,c,pp,kw ...