如何在 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="[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