专栏文章 Python 中的 *args 和 **kwargs 是什么

大话性能 · 2024年03月23日 · 最后由 幽幽 回复于 2024年03月27日 · 5569 次阅读

写在前面

初学者在学习 python 函数时可能会遇到*args**kwargs,刚开始可能难以理解。这篇文章将简要解释 Python 中的*args**kwargs。阅读完本文后,您将会理解这些概念以及它们在 Python 编程中的用法。

python 中的函数

在 Python 编码中,一个很常见的操作是将参数传递给函数以执行特定的任务。而函数被定义时,参数通常限制在特定的数量上。让我们来看一个代码片段,它定义了一个带有两个位置参数的函数来执行简单的加法操作:

def addition(a, b):
    sum = a + b
    return sum

上面定义的函数仅可接受两个参数,以下是函数调用,其中包含两个参数:

addition(3, 2)

输出:

5

没有任何错误。但是,如果传递给它的参数多于或少于两个,它会抛出一个错误。这是函数在编程中的正常工作方式。这很简单,但是如果我们需要定义一个包含不固定数量参数函数该怎么办呢?

我想定义个函数计算多个数字之和

使用*args

当你需要定义一个函数,该函数接受的位置参数数量不固定,而是必须足够灵活,可以接受任意数量的参数时,这就是*args派上用场的地方。

在 Python 中,*args通常作为一个元组数据结构,当函数被调用时,它能够容纳传递给它的多个参数。

def addition(*args):
    sum = 0
    for num in args:
        sum += num
    return sum

函数调用和结果:

result = addition(1, 2, 3, 4, 5)
print(result)  # 输出:15

使用**kwargs

另一方面,**kwargs是一种数据结构,用于在函数调用时保存多个关键字参数。

我知道这可能会有点令人困惑,让我使用一个代码片段来解释我所说的关键字参数,我们在上面的代码基础上添加一个 percent 条件,用于指示是否以百分比形式输出:

def addition(*args, **kwargs):
    sum = 0
    for num in args:
        sum += num
    # 是否以百分比形式输出
    if kwargs.get("percent") is True:
        sum = sum * 100
    return sum

调用函数:

result = addition(1, 2, 3, 4, 5, percent=True)
print(result)  # 输出:1500

现在你应该理解了什么事关键词参数了。

写在最后

  1. *args是元组数据结构,使得函数在调用时能够接受任意数量的位置参数。
  2. **kwargs确保使用它定义的函数能够接收多个键值对作为参数,如果要传递字典作为参数,则需要使用两个前置的星号**进行解包。

更多内容可以学习《测试工程师 Python 工具开发实战》书籍《大话性能测试 JMeter 实战》书籍

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册