如何在 Python 函式中使用可變長度引數?


顧名思義,可變長度引數可以取各種值。您可以使用“*”定義可變引數,例如 *args,以表明函式可以接受可變數量的引數。

以下是關於 Python 可變長度引數的觀察結果。

  • 可變長度引數的命名“*args”不是必需的。唯一需要的是 *;變數名可以是任何東西,例如 *names 或 *numbers。

  • 您可以使用可變長度引數向函式傳送零個或多個引數。

  • 元組用於儲存傳遞給 *args 的值。

  • 正式引數可以出現在可變引數之前,但不能出現在之後。您可以在可變引數之後使用關鍵字引數。

*args 在函式中

要在 Python 中向函式傳遞可變數量的引數,請在函式規範中使用特殊語法 *args。它用於傳遞可變長度、無關鍵字的引數列表。按照慣例,符號 * 通常與語法中的單詞 args 一起使用,以接收可變數量的引數。

您可以使用 *args 接受比您之前定義的正式引數數量更多的額外引數。任何數量的額外引數都可以使用 *args 新增到您當前的正式引數中(包括零個額外引數)。

例如,我們希望建立一個乘法函式,該函式可以同時將任意數量的輸入相乘。在最初不知道引數的確切數量的情況下,使用可變引數使您的函式更具適應性。假設您有一個用於新增數字的函式。

示例 1

以下示例演示了使用具有固定引數數量的常規函式。

def add(num1, num2): return num1+num2 print(add(4,5))

輸出

生成的輸出如下所示。

9

您可以指定函式接受可變數量的引數,並可用於將多達“n”個數字加起來,方法是將引數更改為 *args。

示例 2

以下示例演示了使用接受可變長度引數的函式。

def add_num(*args): sum = 0 for num in args: sum += num return sum result = add_num(1, 2, 3) print('Sum is', result) result = add_num(10, 20, 30, 40) print('Sum is', result) 22 result = add_num(5, 6, 7, 8, 9) print('Sum is', result)

輸出

生成的輸出如下所示。

Sum is 6
Sum is 100
Sum is 35

示例 3

讓我們再看一個關於此的示例 -

def multiply(*args): y = 1 for num in args: y *= num print(y) multiply(3, 7) multiply(9, 8) multiply(3, 4, 7) multiply(5, 6, 10, 8)

輸出

生成的輸出如下所示。

21
72
84
2400

**kwargs 在函式中

在 Python 函式宣告中,使用特定語法 **kwargs 傳遞關鍵字可變長度引數列表。使用雙星號,我們使用名稱 kwargs。雙星號能夠傳遞關鍵字引數是造成這種情況的原因(以及任意數量的關鍵字引數)。在將變數傳遞到函式時,您可以使用關鍵字引數為其命名。

kwargs 可以被視為一個字典,它將每個術語與其一起傳遞的值相關聯。因此,當我們遍歷它們時,kwargs 的列印順序似乎沒有任何規律。

示例

以下示例使用 **kwargs 接受引數。

def intro(**data): print("\nData type of argument:",type(data)) for key, value in data.items(): print("{} is {}".format(key,value)) intro(EmployeeName="George", Lastname="Jackson", Age=22, Phone=1234567890) intro(Firstname="James", Lastname="Jude", Email="jamesjude@nomail.com", Country="USA", Age=25, Phone=9876543210)

輸出

生成的輸出如下所示。

Data type of argument: <class 'dict'>
EmployeeName is George
Lastname is Jackson
Age is 22
Phone is 1234567890

Data type of argument: <class 'dict'>
Firstname is James
Lastname is Jude
Email is jamesjude@nomail.com
Country is USA
Age is 25
Phone is 9876543210

更新於: 2022-09-16

18K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.