解压函数参数
如果一个函数接受n个参数,并且还有另一个函数返回一个n个项目的序列(或者我有一个n个项目的序列),有没有一种方法可以“映射”这两个函数(或使第一个函数将n个项目的序列作为输入和返回结果)我不想(有时可能不能)自己编辑函数并更改其参数参数和返回值类型。
即
def func1(x, y, z):
return x+y+z
def func2(w):
return [i for i in range(w,w+3)]
func1(func2( ... ))
在这种情况下不能。
-
您正在寻找
*args
参数语法:>>> def foo(bar, baz, spam): ... print bar, baz, spam ... >>> arguments = [1, 2, 3] >>> foo(*arguments) 1, 2, 3
当将参数传递给可调用对象时,任何带有
*
星号的表达式都将被解释为一系列位置参数,并被扩展为作为单独的参数传递给被调用对象(函数,方法等)。对于您的示例将是:
func1(*func2(...))
有一个等效的关键字使用
**
双星号(进行映射),并且您也可以在函数签名中使用相同的语法。