学习笔记,有错必纠 可变长参数元祖 函数可以接收不定个数的参数,以*开头的参数名会收集所有的参数到一个元组上,例如,printall接收任意个数的参数并打印它们:: def p
学习笔记,有错必纠
可变长参数元祖
函数可以接收不定个数的参数,以*开头的参数名会收集所有的参数到一个元组上,例如,printall接收任意个数的参数并打印它们::
def printall(*args):print(args)
printall(1, 2, 'a')
输出:
(1, 2, 'a')收集参数可以使用任何你想要的名称,但按惯例通常使用args
收集的反面是分散,如果我们有一个序列,我们想将它作为可变长参数传入到函数中,可以使用*操作符。
例如,divmod函数只接收两个参数,但它不接收元组,如果将元祖作为参数传入,则会报错:
In [20]: t = (10, 3)In [21]: divmod(t)
TypeError: divmod expected 2 arguments, got 1
这时,如果将元组分散,就可以使用这个函数了:
In [22]: t = (10, 3)In [23]: divmod(*t)
Out[23]: (3, 1)
很多内置函数使用可变长参数元组,例如,max和min:
In [24]: max(1,2,3)Out[24]: 3
In [25]: min(1,2,3)
Out[25]: 1