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
Population is 3400000
Capital is Hyderabad
StateName is Andhra Pradesh
Population is 1000000
ForestCoverage is 30%
Capital is Amaravati