首頁 > 後端開發 > Python教學 > Python 函式參數中的「*args」和「kwargs」有什麼不同?

Python 函式參數中的「*args」和「kwargs」有什麼不同?

Barbara Streisand
發布: 2024-12-29 03:18:18
原創
150 人瀏覽過

What's the Difference Between `*args` and `kwargs` in Python Function Parameters?

揭秘函數參數中(雙星)和(星)的意義*

Python 中,函數由*

Python 中,函數由

*Python 中,函數由

*

Python 中,函數由
def foo(*args):
    for arg in args:
        print(arg)
登入後複製
args 和

*kwargs表示的參數作為通用機制來適應任意

foo(1)  # Output: 1
foo(1, 2, 3)  # Output: 1 2 3
登入後複製

使用*args 解包位置參數

*args 參數將所有超過預定義位置參數的位置參數收集到一個元組中。例如:

def bar(**kwargs):
    for key, value in kwargs.items():
        print(key, value)
登入後複製
此函數可以接受任意數量的位置參數,例如:

bar(name='John', age=30)  # Output: name John, age 30
登入後複製

使用kwargs**另一方面,**kwargs 將所有關鍵字參數收集到一個字典。

使用關鍵字參數調用此函數會產生:

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)
登入後複製

args 和
foo(123, 'a', 'b', apple='red')  # Output: 123 ('a', 'b') None {'apple': 'red'}
登入後複製
kwargs

*這兩個習語可以組合起來以允許固定和可變的混合參數:

    可以如下調用此函數:
  • 其他用例
def foo(bar, lee):
    print(bar, lee)

baz = [1, 2]
foo(*baz)  # Output: 1 2
登入後複製
  • 拆包參數清單: *習慣用法可用於在呼叫時解壓縮參數列表函數:
first, *rest = [1, 2, 3, 4]
# first = 1
# rest = [2, 3, 4]
登入後複製
  • 擴展可迭代解包(Python 3 ): * 可以用在賦值的左側來取得列表:
def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
登入後複製

僅限關鍵字參數(Python 3 ): 函數可以使用下列語法限制關鍵字參數:此函數需要三個位置參數以及*. 之後的任意數量的關鍵字參數

以上是Python 函式參數中的「*args」和「kwargs」有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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