首頁 > 後端開發 > Python教學 > *args 和 kwargs 在 Python 函數定義和呼叫中如何運作?

*args 和 kwargs 在 Python 函數定義和呼叫中如何運作?

Barbara Streisand
發布: 2024-12-26 05:17:12
原創
794 人瀏覽過

Python 函數中的

How do *args and kwargs Work in Python Function Definitions and Calls?

* 和 Python 函數中的參數

在Python 中,*(雙星/星號)和(星號) /星號)函數定義和呼叫中的符號在處理變數中起著至關重要的作用

**kwargs

語法

def foo(x, y, **kwargs):
    pass
登入後複製

表示函數foo可以接受任意數量的關鍵字參數。這些關鍵字參數被收集到一個名為 kwargs 的字典。例如:

def bar(**kwargs):
    for a in kwargs:
        print(a, kwargs[a])

# Call the function
bar(name='one', age=27)
# Output:
# name one
# age 27
登入後複製

*args

類似地,語法

def foo(x, y, *args):
    pass
登入後複製

允許函數 foo 接受任意數量的位置參數。這些參數被收集到一個名為 args 的元組中。

def foo(*args):
    for a in args:
        print(a)

# Call the function
foo(1)
# Output: 1

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

* 組合

*kwargs 和 args 可以一起使用允許固定參數和可變參數。例如:

def foo(kind, *args, bar=None, **kwargs):
    print(kind, args, bar, kwargs)

# Call the function
foo(123, 'a', 'b', apple='red')
# Output: 123 ('a', 'b') None {'apple': 'red'}
登入後複製

擴充可迭代解包

* 符號也可用於在呼叫函數時解包參數清單。例如:

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

# Create a list
baz = [1, 2]

# Call the function using unpacking
foo(*baz)
# Output: 1 2
登入後複製

注意:僅位置參數(Python 3.8 )

在Python 3.8 及更高版本中,可以透過使用在函數定義中指定僅位置參數* 常規參數前位置參數* 常規參數前的符號:

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass
登入後複製

函數只能接受三個位置參數,任何附加參數都必須傳遞作為關鍵字參數。

kwargs 的插入順序

在 Python 3.6 及更高版本中,關鍵字參數的順序保留在 kwargs 字典中。這在某些情況下很有用,例如當您需要維護傳遞給函數的參數的順序時。

以上是*args 和 kwargs 在 Python 函數定義和呼叫中如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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