Python 中的 *args 和 **kwargs 是什麼

大话性能發表於2024-03-23

寫在前面

初學者在學習 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

現在你應該理解了什麼事關鍵詞引數了。

寫在最後

  1. *args是元組資料結構,使得函式在呼叫時能夠接受任意數量的位置引數。
  2. **kwargs確保使用它定義的函式能夠接收多個鍵值對作為引數,如果要傳遞字典作為引數,則需要使用兩個前置的星號**進行解包。

更多內容可以學習《測試工程師 Python 工具開發實戰》書籍《大話效能測試 JMeter 實戰》書籍

相關文章