2012-10-08 3 views
13

인수가 n 개의 인수를 취하고 n 개의 항목 (또는 n 개의 항목이있는 시퀀스가 ​​있음)을 반환하는 다른 함수가있는 경우 'map'하는 방법이 있습니까? 이 두 함수는 (또는 첫 번째 함수를 n 개의 항목을 입력으로하고 결과를 반환하도록합니다.) 함수를 직접 편집하고 인수 매개 변수를 변경하고 반환하기를 원하지 않습니다 (어쩌면 불가능할 수도 있음). 값 유형함수를 언 패킹

즉)

def func1(x, y, z): 
    return x+y+z 

def func2(w): 
    return [i for i in range(w,w+3)] 

이 경우 캔트 func1(func2(...)).

답변

14

당신은 *args 인수 구문을 찾고 있습니다 : 호출 가능한 인수를 전달하면 * 별표 앞에 어떤 표현, 위치 인수의 순서로 해석되고

>>> def foo(bar, baz, spam): 
...  print bar, baz, spam 
... 
>>> arguments = [1, 2, 3] 
>>> foo(*arguments) 
1, 2, 3 

에 전달 될 확장 호출 된 객체 (함수, 메소드 등)에 대한 별도의 인수로 사용됩니다. 것입니다 귀하의 예를 들어

:

func1(*func2(...)) 

** 더블 asterixes을 (매핑 소요)를 사용하여 키워드 상당이며, 당신이 너무 기능 서명에 동일한 구문을 사용할 수 있습니다.

documentation on call expressions을 참조하고 기능 서명 미러 구문 인 documentation on function definitions을 참조하십시오.