2013-02-21 2 views
1

Предположим, у меня есть функция def foo(A, B).Функция перехода для работы с различным числом переменных

Теперь у меня есть другая функция bar(func), где func - это функция, которая принимает только одну переменную. Я хочу передать в foo как func, но со второй переменной B всегда фиксируется до 300. Как я могу это сделать?

+0

для поиска «частичного применения». – Hyperboreus

ответ

3

Вы используете lambda:

bar(lambda x: foo(x,300)) 

в основном,

func = lambda x: x*x 

более или менее эквивалентно:

def func(x): 
    return x*x 

Так что в данном случае мы используем то, что это более или менее эквивалент:

def new_func(x): 
    return foo(x,300) 

, а затем мы передаем эквивалент new_func на номер bar.

2

Lambda проще, но вы также можете использовать functools.partial для более сложных случаев:

import functools 

bar(functools.partial(foo, B=300)) 
Смежные вопросы