有两种类型的参数可以传递给Python函数。它们是 *args (非关键字参数) 和 **kwargs (关键字参数)。通配符,'*'和'**'是在没有定义参数数量的情况下使用的。**kwargs在函数中用于在函数中传递基于关键字的可变长度的参数。本教程中已经展示了Python函数中kwargs的不同用法。
例1:读取关键字参数值
用以下脚本创建一个 Python 文件,在名为sumFunc() 的函数中使用****kwargs作为参数。有两个数字作为关键字参数被传递到sumFunc()函数中。脚本中使用了kwargs.values()**函数,通过使用'for'循环只读取关键字参数的参数值。该循环将对参数值进行迭代,并打印出参数值的总和。
#Define function
def sumFunc(**kwargs):
#Initialize the variable
sum = 0
#Read the argument values
for v in kwargs.values():
#Calculate the sum
sum = sum + int(v)
#Print the sum value
print("The result of the sum is: %d" %sum)
#Calling function with two arguments
sumFunc(num1=10, num2=30)
输出
执行上述脚本后会出现以下输出。10和30的总和是40,已经打印在输出中了。
例子-2: 读取关键字参数键和值
用以下脚本创建一个Python文件,在名为MyFunc()的函数中使用**kwargs作为参数。有两个字符串作为关键字参数被传递到**MyFunc()函数中。脚本中使用了kwargs.items()**函数,通过使用'**for'**循环来读取关键字参数的参数键和值。这个循环将对参数的键和值进行迭代,并打印出键、值以及值的连接字符串。
#Define function
def MyFunc(**kwargs):
message = ''
#Read the argument names and value
for k, v in kwargs.items():
print("%s = %s" % (k, v))
#Combine the string values
message = message + v
#Print the combined string values
print(message)
#Calling function with two arguments of string values
MyFunc(msg='Welcome to', site=' LinuxHint')
输出
执行上述脚本后会出现以下输出。参数值的连接值是,'Welcome to LinuxHint'。带值的键和串联的字符串已被打印在输出中。
例子-3:使用带有普通参数的kwargs
用下面的脚本创建一个Python文件,函数的第一个参数是普通参数,第二个参数是关键字参数。脚本中使用了**kwargs.values()**函数,只从关键字参数中读取参数值。接下来, 关键字参数的值与普通参数的值连接起来, 然后再打印出来.
#Define function
def MyFunc(argument, **kwargs):
#Assign the extra argument value
message = argument
#Read the argument values
for v in kwargs.values():
#Combine new value with the previous value
message = message + v
#Add the extra argument value at the end of the variable
message = message + argument
#Print the variable
print(message)
#Calling function with two arguments of string values
MyFunc('****', msg='Testing Keyword Argument')
输出
执行上述脚本后会出现以下输出。正常参数和关键字参数的连接值是,'****Testing Keyword Argument****',该值被打印在输出中。
例4:通过使用字典传递关键字参数
用下面的脚本创建一个Python文件,该函数接受四个普通参数并打印参数值的平均值。在这里,kwargs 变量被声明为一个字典对象,其中的键与普通参数变量名相同。接下来, 这个函数被**kwargs调用了。
#Define a function with four argument values
def avgFunc(var1, var2, var3, var4):
#Calculate the average of the argument values
avg_value = (var1 + var2 + var3 + var4)/4
#Print the average values
print("Average value of %d, %d, %d, and %d is %f" %(var1, var2, var3, var4, avg_value))
#Declare a dictionary of four items
kwargs = {"var1": 20, "var2": 10, "var3": 30, "var4": 40}
#Call the function with the keyword arguments
avgFunc(**kwargs)
输出
执行上述脚本后会出现以下输出。20、10、30和40的平均值是25,已经打印在输出中了。
例5:使用kwargs、普通参数和默认值的参数
用下面的脚本创建一个Python文件,其中函数需要两个普通参数,两个带缺省值的参数,以及关键字参数。在函数调用时传递的第1个参数的值,将被打印在第一个输出中。第1、2、3个参数的总和将被打印在第二个输出中。第4个参数的值将被打印在第三个输出中。关键字参数的值将被打印在第四个输出中,作为一个字典。
'''
用未定义参数、
定义参数和关键字参数定义函数
'''
Define the function with undefined arguments,
defined arguments and keyword arguments
'''
def MyFunc(var1, var2, var3=20, var4=False, **kwargs):
#Print the first argument value
print("The 1st argument value is ", var1)
#Print the sum of three argument values
print("The sum of three argument values is ", var1 + var2 + var3)
#Print the 4th argument value
print("The 4th argument value is ", var4)
#Print the keyword arguments
print("The values of keyword arguments are :", kwargs)
#Call the function
MyFunc(45, 35.89, arg1=11, arg2=22, arg3=66)
输出
执行上述脚本后会出现以下输出。
结论
根据编程目的,通过使用kwargs,可以在不同时间以不同数量的参数调用一个函数。本教程已经正确解释了Python函数中kwargs的用途,以帮助Python用户在需要时在他们的脚本中使用它。