Bei einer Funktion höherer Ordnung, die mehrere Funktionen als Argumente übernimmt, wie könnte diese Funktion Schlüsselwortargumente an die Funktionsargumente übergeben?Trennen von ** kwargs für verschiedene Funktionen
Beispiel
def eat(food='eggs', how_much=1):
print(food * how_much)
def parrot_is(state='dead'):
print("This parrot is %s." % state)
def skit(*lines, **kwargs):
for line in lines:
line(**kwargs)
skit(eat, parrot_is) # eggs \n This parrot is dead.
skit(eat, parrot_is, food='spam', how_much=50, state='an ex-parrot') # error
state
ist kein Schlüsselwort arg von eat
so wie nur Schlüsselwort args relevant die Funktion übergeben Skit können, die sie anrufen wird?
Kein Zweifel, es gibt Möglichkeiten, dies zu tun, aber ich denke, Sie dies aus dem falschen Winkel sind nähern. Was würden Sie tun, wenn zwei Ihrer Funktionen ein Schlüsselwort arg mit demselben Namen annehmen und Sie den beiden Funktionen unterschiedliche Werte übergeben möchten? Am besten geben Sie explizit dicts of keyword args ein. Potentiell wäre jedes Argument (sagen wir) ein Zwei-Element-Tupel, das aus einer Funktion und ihrem Dict von Schlüsselwort-Argumenten besteht. – Hammerite
Das ist wahrscheinlich die beste Lösung. – cheezsteak