Python 如何使用变长参数

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

使用特定语法**kwargs可以传递关键字、可变长度的参数列表在Python函数声明中。通过双星号,我们使用参数名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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程