如何在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

您可以指定函式接受可變數量的引數,並透過將引數更改為 *args 來用於最多加‘n’個數字。

示例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年9月16日

18K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告