Ich schreibe einen Code, in dem einige Funktionen viele Eingabevariablen benötigen. Also, ich dachte, es wäre eine gute Idee, diese Eingabevariablen über ein Wörterbuch aufrufbar zu machen. Ich habe Probleme mit Funktionen, die von Elternfunktionen aufgerufen werden. Betrachten Sie als ein einfaches Beispiel den folgenden Code.Wie können Wörterbuchelemente als Funktionskwarts in Eltern- und Kind-/Unterfunktionen verwendet werden?
import numpy as np
## generate some data and call function via dict
def f(x):
return np.cos(x)
data_one = np.linspace(1, 10, 10) # x
data_two = f(data_one) # y
xy_dict = dict(x=data_one, y=data_two) ## put x,y into dict
def try_dict_ops(x, y):
c = [x[i] - y[i] for i in range(len(x)) if len(x) == len(y)]
return np.array(c)
print(try_dict_ops(**xy_dict))
## prints array, it works
Jetzt werde ich eine Elternfunktion und entsprechende Daten dict vorstellen.
Meine Frage bezieht sich auf die verschiedenen Methoden zum Aufruf der Elternfunktion, die wiederum die oben definierte Unterfunktion aufruft. Gibt es einen einfacheren Weg, dies zu tun, ohne x
und y
in abxy_dict
explizit zu setzen? Was ist, wenn eine Elternfunktion zwei verschiedene Unterfunktionen aufruft, von denen beide Kwargs-Namen teilen, aber nicht unbedingt Arg-Werte - ist mein Ziel bei solch einem Setup noch möglich?
Extrem nützlich, danke! Kurz gesagt, kann eine Funktion abrufbare Kwargs aus mehreren Wörterbüchern haben? – mikey
@mikey wieder, verwechseln Sie nicht die ähnliche Syntax für den Aufruf und für die Definition von Funktionsparametern. Ab Python 3.5 können Sie mehrere Wörterbücher mit '** name' in einem Anruf angeben. Alle kombinierten Schlüsselwerte werden an die Funktion übergeben. Es liegt an der Funktion, wenn sie Parameter und/oder einen Catch-All-Parameter explizit benannt hat. –