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