"Return" in function decorators (Python)?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler

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?

Woher ich das weiß:Hobby – Netzwerktechniker & Programmierer

chillCat 
Fragesteller
 28.10.2023, 13:49

Es ist ein function decorator, der fügt einen bestimmten Code zu einer Funktion zu damit man den nicht jedes mal schreiben muss

0
chillCat 
Fragesteller
 28.10.2023, 13:51

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")

1