Создание функции Python с частичными параметрами - PullRequest
6 голосов
/ 15 июля 2010

Я хочу передать функцию 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 ей.

Это кажется слишком умным для группового проекта ... есть ли более прямой или питонский способ сделать это?

Спасибо!

1 Ответ

21 голосов
/ 15 июля 2010

Это называется карри или частичным применением. Вы можете использовать встроенный functools.partial () . Что-то вроде следующего будет делать то, что вы хотите.

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

inc2 = functools.partial(add, 2)
print inc2(3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...