2010-07-15 2 views
5

파이썬 함수를 다른 함수에 전달하려고합니다. 일부 매개 변수가 미리 채워져 있습니다. 내가으로 inc2을 전달하고 함수가 모르기 때문에 *args으로 폭발 이후 args의 통과의 일종을 사용하고 싶지 않아부분 매개 변수를 사용하여 파이썬 함수 만들기

def add(x, y): 
    return x + y 

def increment_factory(i): # create a function that increments by i 
    return (lambda y: add(i, y)) 

inc2 = increment_factory(2) 

print inc2(3) # prints 5 

:

내가 뭐하는 거지 단순화 args을 전달하십시오.

이것은 그룹 프로젝트에서 너무 영리하다고 느낍니다.이 작업을 수행하는 데 더 간단하거나 비할 데없는 방법이 있습니까?

감사합니다.

답변

18

이것을 카레 또는 부분 적용이라고합니다. 내장 된 functools.partial()을 사용할 수 있습니다. 다음과 같은 것은 당신이 원하는 것을 할 것입니다.

import functools 
def add(x,y): 
    return x + y 

inc2 = functools.partial(add, 2) 
print inc2(3) 
+0

고마워요! 하스켈에서 가장 좋아하는 기능 중 하나는 내장 된 커링 (currying)입니다. 나는 방금 기간을 사용해야했다 :). –

관련 문제