- Python程序设计:人工智能案例实践
- (美)保罗·戴特尔 哈维·戴特尔
- 559字
- 2021-08-13 17:17:07
4.11 不定长参数列表
具有不定长参数列表的函数(如内置函数min
和max
)可以接收任意数量的参数。例如下面的代码中min
函数的调用:
min
的说明文档指出min
有两个必需的参数(名为arg1
和arg2
)和一个可选的形如*args
的参数,表明函数可以接收任意数量的附加参数。参数名称之前的*
告诉Python将剩余的参数打包成元组传递给参数args
。在上面的调用中,参数arg1
接收88
,参数arg2
接收75
,参数args
接收元组(96,55,83)
。
定义带不定长参数列表的函数
下面的代码定义了average
函数,它可以接收任意个数的参数:
依照惯例,上面的代码将参数命名为args
,但这并不是强制性的,可以使用任意标识符。如果函数包含多个参数,那么*args
参数必须是最右端的一个参数。
下面的代码使用不同长度的参数列表调用几次average
函数:
为了计算平均值,用args
元组中元素的总和(内置函数sum
的返回值)除以元素的个数(内置函数len
的返回值)。观察average
函数的定义可以知道,如果args
的长度为0,会引发ZeroDivisionError
。本书会在下一章演示如何在没有解包的情况下访问元组中的元素。
将可迭代对象的单个元素作为函数的参数
可以解包元组、列表或者其他可迭代对象,并将解包得到的元素作为参数单个传递给函数。在调用函数时将操作符*
作用于可迭代参数可以对该参数解包。下面的代码创建了一个包含5个元素的列表grades
,然后使用表达式*grades
对其解包,所得元素作为average
函数的参数:
上面的代码中的函数调用形式相当于average(88, 75, 96, 55, 83)
。