学习使用Python的kwargs

65 阅读4分钟

有两种类型的参数可以传递给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用户在需要时在他们的脚本中使用它。