Python 中的 kwargs

Manav Narula 2023年1月30日
  1. 在 Python 中使用 **kwargs 让函数获取任意数量的关键字参数
  2. 在 Python 中调用函数时使用 *l 参数解包参数
Python 中的 kwargs

我们可以为函数提供不同的参数。这些参数在函数中用于执行一些所需的工作。

在编程中,我们用函数名指定括号中的参数。我们可以在函数定义中指定所需的参数数量。

在 Python 中使用 **kwargs 让函数获取任意数量的关键字参数

Python 中有关键字、位置和任意参数。Python 提供了一个有趣的特性 **kwargs

它是代表关键字参数的标准符号。我们可以使用 this 为函数提供任意数量的参数。

这里 kwargs 只是一个变量名,可以用任何其他有效的变量名替换。这里的主要部分是**运算符。

** 在 Python 中被称为解包操作符。我们用它来解压 Python 中的字典。

我们还有 * 运算符,它可以解包列表、元组和其他可迭代对象,它们可以使用这两者来为函数提供任意数量的参数。

kwargs 背后的主要概念是函数将接收这些参数打包到一个对象中。它将解包所有元素并根据需要在函数中使用它们。

首先,让我们用 * 运算符来演示这一点。如前所述,它用于从可迭代的列表或元组中解包元素。

最基本的使用方法是在函数定义中提供*kwargs。这样,我们可以为函数指定任意数量的参数。

def fun(*l):
    for i in l:
        print(i)


fun(1, 2, 3)

输出:

1
2
3

在 Python 中调用函数时使用 *l 参数解包参数

在上面的示例中,我们使用函数的 *l 参数来解包多个参数并打印它们。

类似地,*l 可用于在调用函数时解包参数。在这里,角色颠倒了。

def fun(x, y):
    print(x, y)


l = [5, 7]
fun(*l)

输出:

5 7

在上面的例子中,我们不能直接向函数发送一个列表。所以我们在调用函数时解压它。

现在让我们讨论**kwargs。使用这种方法,我们可以为函数提供许多关键字参数。

参数作为字典的键值对传递,并使用 ** 运算符在函数中解包。

def fun(**kwargs):
    for i in kwargs:
        print(i, kwargs[i])


fun(a=1, b=2, c=3)

输出:

a 1
b 2
c 3

我们使用 **kwargs 将多个关键字参数传递给上例中的函数。

我们还可以同时使用这两种方法来指定多个参数和位置参数。

def fun(x, **kwargs):
    print("Multiple Keyword Arguments")
    for i in kwargs:
        print(i, kwargs[i])
    print("Positional arguments", x)


fun(10, a=1, b=2, c=3)

输出:

Multiple Keyword Arguments
a 1
b 2
c 3
Positional arguments 10

确保关键字参数的顺序很重要,因为在 Python 3.6 中,会记住它们的插入顺序。

我们还可以在 Python 3 中使用 * 运算符进行扩展的可迭代解包。我们可以使用赋值语句左侧的运算符。

我们也可以使用它在函数调用中提供多个参数。

def fun(x, z, *l):
    print("Multiple Arguments")
    for i in l:
        print(i)
    print("Positional arguments", x, z)


x, *y, z = [1, 2, 3, 4]
fun(x, z, *y)

输出:

Multiple Arguments
2
3
Positional arguments 1 4
作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn