Мне нужно многократно вызвать многопараметрическую функцию, пока фиксирован только один параметр. Я думал об использовании декораторов:Настройка параметров с помощью декораторов и вложенных функций
# V1 - with @decorator
def dec_adder(num):
def wrap(fun):
def wrapped_fun(n1):
return fun(n1, second_num=num)
return wrapped_fun
return wrap
@dec_adder(2)
def adder(first_num, second_num):
return first_num + second_num
print adder(5)
>>> 7
Но это кажется запутанным, так как это, кажется, вызова функции с 2-параметра, adder
только один аргумент.
Другого подход заключается в использовании вложенного определения функции, которая использует локальные переменную от родительской функции:
# V2 - without @decorator
def add_wrapper(num):
def wrapped_adder(num_2):
return num + num_2
return wrapped_adder
adder = add_wrapper(2)
print adder(5)
>>> 7
Но я не решаюсь использовать этот подход, так как в моей фактической реализации обернутого функция очень сложен. Мой инстинкт заключается в том, что он должен иметь автономное определение.
Простите меня, если это вступит в сферу мнений, но либо подход считается лучшим дизайном и/или более Pythonic? Есть ли другой подход, который я должен рассмотреть?
Это хороший и чистый. Спасибо. – andrew