2010-07-15 23 views
5

Bir Python işlevini, bazı parametrelerinin zamanından önce "doldurulduğu" bir başka işleve aktarmak istiyorum. Ben içine inc2 geçirerek fonksiyonu bilmediği için *args ile patlayan sonradan args geçmesiyle çeşit kullanmak ve istemediğinizKısmi parametrelerle Python fonksiyonu oluşturma

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 

:

Bu

ben ne yapıyorum basitleştirme olduğunu args'u geçmek için.

Bu bir grup projesi için biraz zekice hissediyor ... bunu yapmak için daha yalın veya pythonik bir yol var mı?

Teşekkürler!

cevap

18

Buna körleme veya kısmi uygulama denir. Yerleşik functools.partial()'u kullanabilirsiniz. Aşağıdaki gibi bir şey istediğini yapardı.

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

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

Teşekkürler! Haskell'in en sevdiğim özelliklerinden biri de yerleşik körleme. Ben sadece terimi kullanmalıydım :). –