在编程中,将参数传递给函数以执行特定任务是很常见的,在定义函数时,这些参数通常被限制为特定数字。看一下下面的代码片段,它定义了一个具有两个位置参数的函数,用于执行简单的算术运算(加法);
def addition(a, b): sum = a + b return sum上面定义的函数被设计为只接受两个参数,如果用两个参数调用这个函数
addition(3, 2)
它按预期返回 5,没有错误,但如果传递给它的参数多于或少于两个,它会抛出错误,这只是函数在编程中的正常工作方式。
当你面临一个挑战时,你必须定义一个函数,该函数接受的位置参数的数量不是固定的,而是它必须足够灵活,可以接受传递给它的尽可能多的参数,这就是 *args 的用武之地。
*Python 中的 args 通常用作元组数据结构,能够在调用函数时保存传递给它的大量参数。
另一方面,kwargs 是一种数据结构,在函数调用时包含大量关键字参数。
我知道在这一点上可能会有点混乱,让我使用代码片段解释一下我所说的关键字参数是什么意思;
def func(**kwargs): pass使用关键字参数调用函数
func(age=30,name=“Peter”)
从上面的代码片段中,现在可以理解键字参数的含义。
尽管 Python 字典同样包含关键字参数,但它们仍然必须使用前面的两个星号“**”进行解压缩,否则在直接传递 python 字典时会出现错误。
关键要点:
1. *args 是 tupple 数据结构,它使函数能够在函数调用时接受任意数量的位置参数,只要用它定义函数即可。
2. **kwargs。确保用它定义的函数能够接收大量。键值对作为参数,如果要将字典作为参数传递,则必须使用前面的两个星号“**”来解压缩它们
