初学者在学习 python 函数时可能会遇到*args
和**kwargs
,刚开始可能难以理解。这篇文章将简要解释 Python 中的*args
和**kwargs
。阅读完本文后,您将会理解这些概念以及它们在 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
现在你应该理解了什么事关键词参数了。
*args
是元组数据结构,使得函数在调用时能够接受任意数量的位置参数。**kwargs
确保使用它定义的函数能够接收多个键值对作为参数,如果要传递字典作为参数,则需要使用两个前置的星号**
进行解包。