Создание Python функционирует с частичными параметрами

Я хочу передать функцию 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 способ сделать это?

Спасибо!

8
задан Donald Miner 15 July 2010 в 18:39
поделиться

1 ответ

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

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

inc2 = functools.partial(add, 2)
print inc2(3)
24
ответ дан 5 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: