Hallo zusammen,
ich möchte eine Funktion in einer anderen Funktion aufrufen. Macht sowas Sinn oder gibt es Wege sowas zu vermeiden? Ich habe eine Funktion die Arrays abspeichert. Diese Funktion soll in einer anderen Funktion aufgerufen werden, in der die Arrays berechnet werden.
detlef
Funktion in Funktion aufrufen
Natürlich macht das Sinn und du willst es gar nicht vermeiden. Der Sinn von Funktionen liegt gerade darin, dass Anweisungen gekapselt (und wiederverwendet) werden können. Da ist es nur natürlich, dass in Funktionen andere Funktionen aufgerufen werden, welche weitere Funktionen aufrufen, welche dann ... Du siehst wohin das führt. Manchmal ist es sogar sinnvoll, eine Funktion sich selbst aufrufen zu lassen (Rekursion).
Das Leben ist wie ein Tennisball.
Hallo,
also mit Funktionen und Parametern habe ich schon gearbeitet, aber wie mache ich das dann mit einer Funktion als Parameter?
oder wie?
detlef
also mit Funktionen und Parametern habe ich schon gearbeitet, aber wie mache ich das dann mit einer Funktion als Parameter?
Code: Alles auswählen
def Funktion1 (x,y)
...
return erg
def Funktion2(a,b,Funktion1(x,y))
....
return erg2
detlef
Code: Alles auswählen
def create_and_save(a, b, filename):
m = create(a, b)
save(m, filename)
def create(a, b):
return a*b
def save(m, filename):
with open(filename, "w") as fp:
m.save(fp)
Das Leben ist wie ein Tennisball.
Hallo,
also das Beispiel verstehe ich nicht. Muss die Funktion, die in einer anderen aufgerufen werden soll, nicht als Parameter eingeladen werden?
Irgendwie so?
also das Beispiel verstehe ich nicht. Muss die Funktion, die in einer anderen aufgerufen werden soll, nicht als Parameter eingeladen werden?
Code: Alles auswählen
def Write(data):
....
def Berechnung(a,b,Write(data))
for i in range():
matrix[i] = ...
write(matrix[i])
Nein so nicht, damit uebergibst du den Return-Wert beim Aufruf von 'Write'.
Du willst (Funktionen klein schreiben!):
yipyip
Du willst (Funktionen klein schreiben!):
Code: Alles auswählen
def write(data):
....
def berechnung(a, b, write)
for i in range():
matrix[i] = ...
write(matrix[i])
yipyip
Es stellt sich allerdings die Frage, warum du die write-Funktion in disem Fall als Parameter übergeben möchtest. Auf den ersten Blick scheint das in diesem Szenario nicht besonders sinnvoll zu sein. Bereits das Vorhaben, dass die Funktion zur Berechnung etwas in eine Datei schreibt, schreit nach einem Fehler. Die Berechnung und das Speichern sollten vollständig getrennt sein.
Das Leben ist wie ein Tennisball.
@EyDu: Ist es doch auch. Das übergebene `write()` kann ja sonstwas mit dem Ergebnis anstellen.
Wobei ich das in Python auch nicht so machen würde. Das ist was für den „continuation style” in JavaScript & Co, aber in Python eher ungewöhnlich.
Wobei ich das in Python auch nicht so machen würde. Das ist was für den „continuation style” in JavaScript & Co, aber in Python eher ungewöhnlich.
Kleiner Nachtrag:
Write(data) ergibt zwar irgendeinen Return-Wert aber
schon einen Syntaxfehler.
yipyip
Write(data) ergibt zwar irgendeinen Return-Wert aber
Code: Alles auswählen
def Berechnung(a,b,Write(data)):
...
yipyip
Die Funktionen an sich sind klar getrennt, aber ich bezweifele es, dass das Speichern in der Berechnung sinnvoll ist. Dass man Funktionen übergibt kommt natürlich häufig, aber lediglich zur Modifikation der Berechnung und nicht, um noch nebenher irgendwo Aufgaben zu erledigen.
Das Leben ist wie ein Tennisball.