什么是 kwargs?
kwargs 是 python 函数中关键字参数的缩写,它是一个字典,用于存储在函数调用时传递的额外关键字参数。
为了使用 kwargs,您需要在函数定义中指定一个带有两个星号的参数,如下所示:
def my_function(**kwargs):
for key, value in kwargs.items():
print(key + " = " + value)
在上面的示例中,我们定义了一个名为 my_function 的函数,该函数带有一个名为 kwargs 的参数。该函数通过迭代 kwargs 字典中的键值对来打印每个参数的名称和值。
现在,让我们看看如何调用带有 kwargs 参数的函数。为了调用该函数,您可以像下面这样使用参数名称和值来传递参数:
my_function(name="Alice", age="25", gender="female")
在上面的示例中,我们通过关键字参数的形式传递了三个参数:name、age 和 gender。这些参数将被打包到一个名为 kwargs 的字典中,并作为参数传递给 my_function 函数。该函数将迭代 kwargs 字典并打印每个参数的名称和值。
kwargs 在 Python 中的使用场景非常广泛。例如,当您不知道将有多少个参数要传递给函数时,kwargs 可以非常有用。在这种情况下,您可以使用 kwargs 来处理所有参数,而不必定义大量的位置参数。此外,kwargs 还可以用于接受任意数量的关键字参数,这对于编写可扩展的代码非常有用。
1、kwargs 与位置参数一起使用
例如,您可以将位置参数和关键字参数混合使用来调用带有 kwargs 参数的函数,如下所示:
def my_function(name, age, **kwargs):
print("Name:", name)
print("Age:", age)
for key, value in kwargs.items():
print(key + " = " + value)
my_function("Alice", 25, gender="female", city="New York")
在上面的示例中,我们定义了一个带有两个位置参数 name 和 age,以及一个 kwargs 参数的函数。我们还将 gender 和 city 作为关键字参数传递给该函数。
在函数定义中,位置参数必须出现在 kwargs 参数之前。在调用函数时,位置参数必须按照定义的顺序传递,而关键字参数可以按照任意顺序传递。
输出结果:
2、kwargs 与默认参数一起使用
默认参数是在函数定义中指定的具有默认值的参数,如果没有传递该参数,则使用默认值。例如:
def my_function(name, age=30, **kwargs):
print("Name:", name)
print("Age:", age)
for key, value in kwargs.items():
print(key + " = " + value)
my_function("Alice", gender="female", city="New York")
在上面的示例中,我们将 age 参数设置为默认值 30。如果没有传递 age 参数,则使用默认值。如果传递了 age 参数,则该值将覆盖默认值。
3、kwargs 还可以与其他参数类型一起使用
例如 *args,它允许接受任意数量的位置参数。例如:
def my_function(*args, **kwargs):
print("Positional arguments:")
for arg in args:
print(arg)
print("Keyword arguments:")
for key, value in kwargs.items():
print(key + " = " + value)
my_function("Alice", 25, gender="female", city="New York")
在上面的示例中,我们定义了一个带有 *args 和 kwargs 参数的函数。该函数可以接受任意数量的位置参数和关键字参数。在函数定义中,*args 参数必须出现在 kwargs 参数之前。
在调用函数时,所有位置参数都将被打包到一个元组中,并作为 args 参数传递给函数。所有关键字参数将被打包到一个字典中,并作为 kwargs 参数传递给函数。
输出结果:
总之,kwargs 是 Python 中非常有用的参数类型之一。它提供了一种灵活的方式来处理任意数量和类型的参数,并且可以与其他参数类型一起使用,以提供更多的功能和灵活性。
好处:
- 允许函数接受任意数量的关键字参数。
- 提供灵活的方式向函数传递数据。
- 可以轻松扩展函数以处理新参数。
# kwargs,不定长参数使用
#面积计算
import math
def calcucate_area(shape,**kwargs):
if(shape == 'circle'):
area = math.pi * kwargs.get("width") ** 2
elif shape == "rectangle":
area = kwargs.get("width") * kwargs.get("heitht")
elif shape == "square":
area = kwargs.get("width") ** 2
else:
area = kwargs.get("width")*5
return area
b = calcucate_area("circle",width=2)
print("circel:",b)
a = calcucate_area("square",width=5)
print("square:",a)
c = calcucate_area("rectangle",width=2,heitht=4)
print("rectangle:",c)
输出结果: