函数中不定长参数的传递方式包括两种,包裹位置参数和包裹关键字参数。

包裹位置参数

不定长函数不是说没有形参,需要一个变量名*args承载接收的数据。

顾名思义,不定长,是说函数调用时,参数的数量是不确定的。有可能是一个,二个,三个,也有可能没有。

传进函数体的参数,会以元组的形式储存起来。

for循环遍历args的序列,和用下标一个个表示是一样的。

依次使用传入的参数时,可以for和while循环;要调用具体某个参数,可以按照具体位置使用下标调用。

包裹关键字参数

包裹关键字参数**kwargs和包裹位置参数不同,前面不是一个星号,而是两个星号,kw是keywords的缩写。

实际调用函数时,传入函数的数据类型为字典。在调用时,和关键字函数一样,需要把实参赋值给形参,虽然形参在定义不定长参数的函数时,没有明显写出。

在用for循环遍历kwargs序列时,只是把形参的名字提取了出来,也就是字典的key。

如果需要调用字典的值value,也就是实参,就像需要调用字典元素一样,通过key来获取。

PS:本文代码基于Windows 10,Python 3.10.4。