參數解包:函數定義中的 和*
Python 中的函數定義可以利用 (星號) ) 和* (雙星)運算子來處理不同數量的
單星運算子(*)
運算子(也稱為「var-args」或「var-args」或「 “splat”)收集傳遞的所有位置參數將函數放入名為args 的元組中。例如,在下面的定義中:
def foo(x, y, *args): pass
如果使用foo(1, 2, 3, 4, 5) 呼叫args,則args 元組將包含(3, 4, 5)。
雙星運算子()**
運算子(也稱為「var-kwargs」或「關鍵字splat」)將所有關鍵字參數擷取為名為kwargs** 的字典。在以下定義中:
def bar(x, y, **kwargs): pass
當用bar(1, 2, name='Alice',age=30) 呼叫bar 時,kwargs字典將包含{'name': 'Alice', 'age': 30}.
混合標準參數與變數參數
函數定義可以使用*:
def foo(kind, *args, bar=None, **kwargs): pass
呼叫時將普通參數與變數參數組合起來foo(123, 'a', 'b', apple='red'), 變數'kind', 'args'、'bar' 和'kwargs' 將包含:
解包參數清單
*:也可用來解包參數清單
def foo(bar, lee): pass baz = [1, 2] foo(*baz) # Unpacks baz into [1, 2] for bar and lee
*:也可用來解包呼叫函數時的參數列表:
擴充可迭代解包(Python 3)
first, *rest = [1, 2, 3, 4] # first = 1, rest = [2, 3, 4]
在Python 3 中,*l 可以用在賦值的左側,將可迭代解包為多個變數:
僅關鍵字參數(Python 3)
Python 3引入def func(arg1, arg2, arg3, *, kwarg1, kwarg2): pass僅關鍵字參數,其中*之後:僅允許關鍵字參數:
以上是單星和雙星運算子 (*) 和 () 如何處理 Python 函數定義中的變數參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!