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

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

Mary-Kate Olsen
發布: 2024-12-22 15:41:11
原創
812 人瀏覽過

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

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