寫在前面
初學者在學習 python 函式時可能會遇到*args
和**kwargs
,剛開始可能難以理解。這篇文章將簡要解釋 Python 中的*args
和**kwargs
。閱讀完本文後,您將會理解這些概念以及它們在 Python 程式設計中的用法。
python 中的函式
在 Python 編碼中,一個很常見的操作是將引數傳遞給函式以執行特定的任務。而函式被定義時,引數通常限制在特定的數量上。讓我們來看一個程式碼片段,它定義了一個帶有兩個位置引數的函式來執行簡單的加法操作:
def addition(a, b):
sum = a + b
return sum
上面定義的函式僅可接受兩個引數,以下是函式呼叫,其中包含兩個引數:
addition(3, 2)
輸出:
5
沒有任何錯誤。但是,如果傳遞給它的引數多於或少於兩個,它會丟擲一個錯誤。這是函式在程式設計中的正常工作方式。這很簡單,但是如果我們需要定義一個包含不固定數量引數函式該怎麼辦呢?
我想定義個函式計算多個數字之和
使用*args
當你需要定義一個函式,該函式接受的位置引數數量不固定,而是必須足夠靈活,可以接受任意數量的引數時,這就是*args
派上用場的地方。
在 Python 中,*args
通常作為一個元組資料結構,當函式被呼叫時,它能夠容納傳遞給它的多個引數。
def addition(*args):
sum = 0
for num in args:
sum += num
return sum
函式呼叫和結果:
result = addition(1, 2, 3, 4, 5)
print(result) # 輸出:15
使用**kwargs
另一方面,**kwargs
是一種資料結構,用於在函式呼叫時儲存多個關鍵字引數。
我知道這可能會有點令人困惑,讓我使用一個程式碼片段來解釋我所說的關鍵字引數,我們在上面的程式碼基礎上新增一個 percent 條件,用於指示是否以百分比形式輸出:
def addition(*args, **kwargs):
sum = 0
for num in args:
sum += num
# 是否以百分比形式輸出
if kwargs.get("percent") is True:
sum = sum * 100
return sum
呼叫函式:
result = addition(1, 2, 3, 4, 5, percent=True)
print(result) # 輸出:1500
現在你應該理解了什麼事關鍵詞引數了。
寫在最後
-
*args
是元組資料結構,使得函式在呼叫時能夠接受任意數量的位置引數。 -
**kwargs
確保使用它定義的函式能夠接收多個鍵值對作為引數,如果要傳遞字典作為引數,則需要使用兩個前置的星號**
進行解包。
更多內容可以學習《測試工程師 Python 工具開發實戰》書籍、《大話效能測試 JMeter 實戰》書籍