如何在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="[email protected]", 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 [email protected] Country is USA Age is 25 Phone is 9876543210