Python 中的 *args 和 **kwargs


当我们在 Python 程序中定义函数时,其目的是通过向函数参数提供不同的值来反复执行代码。这种设计中的一个挑战是,如果我们不确定每次调用该函数时想要处理的参数数量会如何?这就是需要特殊参数 *args 和 **kwargs 的地方。让我们逐一看看它们。

*args

*args 使我们能够将可变数量的参数作为输入传递给函数。在下面的示例中,我们计算一系列数字的乘积。每次调用函数时,这些数字的数量都可能不同。

示例

def findproduct(*many_nums):
   result = 1
   for num in many_nums:
      result = result * num
      print("Multiplication result:",result)

findproduct(3,9)
findproduct(2,11,10)

输出

运行上述代码将得到以下结果:

Multiplication result: 3
Multiplication result: 27
Multiplication result: 2
Multiplication result: 22
Multiplication result: 220

**kwargs

接下来,在某些情况下,我们想要传递关键字参数,它们基本上是键值对作为函数的参数。

在这里,我们也可以向函数传递可变数量的此类关键字参数。此类参数命名为 **kwargs。请注意,使用此类参数时有两个星号。实际上,此类关键字参数作为包含多个键值对的 Python 字典传递给程序。

示例

def country_details(**state_info):
   print('')
   for k,v in state_info.items():
      print("{} is {}".format(k,v))

country_details(StateName="Telangana", Capital="Hyderabad",Population=3400000)
country_details(StateName="Andhra Pradesh", Capital="Amaravati",Population=1000000,ForestCoverage="30%")

输出

运行上述代码将得到以下结果:

StateName is Telangana
Capital is Hyderabad
Population is 3400000

StateName is Andhra Pradesh
Capital is Amaravati
Population is 1000000
ForestCoverage is 30%

更新于:2023年4月4日

浏览量:368

开启你的职业生涯

完成课程获得认证

开始学习
广告