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%