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%
广告