"Return" in function decorators (Python)?
Wofür ist das return da? Warum muss die Funktion "zurückgegeben" werden
3 Antworten
Die Funtion wrapper muss zurückgegeben werden, damit sie auf eine andere Funktion - in deinem Beispiel auf helloworld - angewendet werden kann. Die Anwendung geschieht, indem
@test
vor die Funktionsdefinition geschrieben wird.
Hintergrund:
In der Funktion test könntest du zusätzlich zu der Funktion wrapper noch weitere Funktionen lokal definieren. Du kannst aber nur eine dieser lokal definierten Funktionen als jene zurückgeben, die dann das Wrapping, also die Umklammerung, einer anderen Funktion leistet. Die übrigen in test lokal vereinbarten Funktionen könntest du in wrapper als Hilfsfunktionen nutzen.
Ein Wrapper ist ja so definiert, dass aus deiner Funktion helloworld die Funktion test(helloworld) gemacht wird. Das geschieht in der "inneren" def Anweisung. Und die must man zurückgeben, um die gewrappte Funktion zu bekommen.
Der Decorator ist lediglich syntactic sugar dafür.
Im Prinzip gibt das return hier nur den Wert von "wrapper" zurück.
Nur irgendwie verstehe ich den gesamten Sinn hinter dem Code noch nicht so ganz. Fehlt da irgendetwas?
Es ist ein function decorator, der fügt einen bestimmten Code zu einer Funktion zu damit man den nicht jedes mal schreiben muss
function has started
hello world
function has ended
wäre das output von dem code, also wurde quasi vor der funktion print("function has started") ausgeführt, dann die funktion und dann print("function has ended")