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

更新于:2022年9月16日

18K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告