更新时间:2022-09-06 来源:黑马程序员 浏览量:
在Python中,通常在定义一个函数时,若希望函数能够处理的参数个数比当初定义的参数个数多,此时可以在函数中使用不定长参数。其基本的语法格式如下:
def 函数名([formal_args,] *args, **kwargs): "函数_文档字符串" 函数体 return 表达式
在上述格式中,函数共有3个参数。其中,formal_args为形参(也就是前面所用的参数,如a,b),*args和**kwargs为不定长参数。当调用函数的时候,函数传入的参数个数会优先匹配formal_args参数的个数。如果传入的参数个数和formal_args参数的个数相同,不定长参数会返回空的元组或字典;如果传入参数的个数比formal_args参数的个数多,可以分为如下两种情况:
(1)如果传入的参数没有指定名称,那么*args会以元组的形式存放这些多余的参数;
(2)如果传入的参数指定了名称,如m=1,那么**kwargs会以字典的形式存放这些被命名的参数,如{m:1}
为了大家更好地理解,先通过一个简单的案例进行演示,具体如例6-4所示。
例6-4 不定长参数
def test(a, b, *args): print(a) print(b) print(args) test(11, 22)
在例6-4中,第1~4行代码定义了带有多个参数的test函数。其中,args为不定长参数。第5行代码调用test函数时只传入了两个参数11和22,说明11和22会按照从左向右的顺序依次匹配test函数定义时的参数a和b,而args参数因为没有接收到数据,所以其为一个空元祖。
程序的运行结果如图6-4所示。
图6-4 运行结果