Python中的* args和** kwargs

当我们在python程序中定义函数时,其目的是通过向函数的参数提供不同的值来一次又一次地执行代码。这种设计的一个挑战是,如果我们不确定每次调用该函数时要处理的参数数量,该怎么办。这是需要称为args和kwargs的特殊参数的地方。让我们一一看一下。

*参数

* 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:', 27)
('Multiplication result:', 220)

**夸克

接下来,有一些场景,当我们想要传递关键字参数时,它们基本上是键值对作为函数的参数。

同样,我们可以将可变数量的此类关键字参数传递给函数。此类参数称为** kwargs。请注意,使用此类参数时,有两个星号。实际上,此类关键字参数作为python字典传递给程序,该字典包含许多键/值对。

示例

def country_details(**state_info):
   print('\n\n')
   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
Population is 3400000
Capital is Hyderabad

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