Ich muss eine Multi-Parameter-Funktion viele Male aufrufen, während alle außer einem Parameter fest ist. Ich dachte an Dekorateure mit:Einstellen von Parametern mit Decorators vs verschachtelte Funktionen
# 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
Aber das scheint verwirrend, da es eine 2-Parameter-Funktion aufrufen, adder
mit nur einem Argument zu sein scheint.
Ein weiterer Ansatz ist es, eine verschachtelte Funktionsdefinition zu verwenden, die lokalen Variablen aus der übergeordneten Funktion verwendet:
# 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
Aber ich zögere in meiner tatsächlichen Implementierung, da diesen Ansatz zu verwenden, die verpackte Funktion sehr komplex ist. Mein Instinkt ist, dass es eine eigenständige Definition haben sollte.
Verzeihen Sie mir, wenn dies in den Bereich der Meinung wagt, aber ist entweder Ansatz als besseres Design und/oder mehr Pythonic? Gibt es einen anderen Ansatz, den ich berücksichtigen sollte?
Das ist schön und sauber. Vielen Dank. – andrew