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