Я хочу передать функцию Python другой функции с некоторыми ее параметрами, "заполненными" заранее.
Это - упрощение, что я делаю:
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
и более поздний взрыв его с *args
потому что функция я являюсь передающим inc2
в не знает для передачи args
к нему.
Это чувствует себя немного слишком умным для проекта группы... там более простой или pythonic способ сделать это?
Спасибо!
Это называется каррированием или частичным применением. Вы можете использовать встроенную функцию functools.partial () . Что-то вроде следующего будет делать то, что вы хотите.
import functools
def add(x,y):
return x + y
inc2 = functools.partial(add, 2)
print inc2(3)