如何在 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
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP