首頁 >後端開發 >Python教學 >Python 的 *args 和 kwargs 如何處理函式參數?

Python 的 *args 和 kwargs 如何處理函式參數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-22 15:41:11835瀏覽

How Does Python's *args and kwargs Handle Function Parameters?

Python 函數中使用 進行參數解包*

在Python 函數中,

在Python 函數中,

在Python 函數中,

在Python 函數中,

def foo(x, y, *args):
    for a in args:
        print(a)
在Python 函數中,

*語法允許參數具有更大的靈活性
1
2
3

位置參數解包(kwargs)

*args 參數收集所有位置參數為一個元組。例如:

def bar(x, y, **kwargs):
    for k, v in kwargs.items():
        print(k, v)

調用foo(1, 2, 3) 打印:

name John

關鍵字參數解包(kwargs

)

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)
**kwargs 參數將所有關鍵字參數收集為字典。例如:

123 ('a', 'b') None {'apple': 'red'}
呼叫bar(x=1, y=2, name='John') 列印:

組合拆包
def foo(a, b, c):
    print(a, b, c)

obj = {'b':10, 'c':'lee'}

foo(100, **obj) # Prints 100 10 lee

這兩個習慣用法可以組合起來以允許混合使用固定參數和可變參數。例如:

呼叫foo(123, 'a', 'b', apple='red') 印出:

def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]

foo(*baz) # Prints 1 2

相反,kwargs 可以是用於解壓縮函數呼叫中的關鍵字參數。例如:

first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
使用

*解包列表和元組 * 語法也可用於在呼叫函數時解包列表和元組。例如:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
擴展可迭代解包

在Python 3 中,可以在賦值的左側使用* 將可迭代解包到各個變數中。例如:僅位置參數Python 3 也引入了僅位置參數。函數可以指定只有某些參數可以是位置參數。例如:此函數僅接受 3 個位置參數。 * 之後的所有參數都必須作為關鍵字參數傳遞。

以上是Python 的 *args 和 kwargs 如何處理函式參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn