首頁 > 後端開發 > Python教學 > 單星和雙星運算子 (*) 和 () 如何處理 Python 函數定義中的變數參數?

單星和雙星運算子 (*) 和 () 如何處理 Python 函數定義中的變數參數?

Linda Hamilton
發布: 2024-12-24 16:57:10
原創
771 人瀏覽過

How Do Single and Double Star Operators (*) and () Handle Variable Arguments in Python Function Definitions?

參數解包:函數定義中的*

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' 將包含:

  • kind = 123
  • args = ('a ' , 'b')
  • 酒吧 = None
  • kwargs = {'apple': 'red'}

解包參數清單

*:也可用來解包參數清單

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板