Lassen Sie uns endlich unseren eigenen Dekorateur schreiben.
Denken Sie daran, ein Dekorateur verstärkt unsere Funktion.
Es ist einfach eine Funktion, die eine andere Funktion umschließt und sie verbessert oder ändert, aber der beste Weg für mich zu erklären,
was es ist, besteht darin, unsere eigene zu codieren.
Also machen wir das.
Lassen Sie uns ein my definieren.
Decorator und dieser Decorator wird eine Funktion sofort akzeptieren, wir sollten wissen, dass dies jetzt eine
Funktion höherer Ordnung hier drin ist.
Hier drin werden wir die Funktion aufrufen, aber bevor wir das tun, werden wir diese Funktion tatsächlich in
eine andere Funktion einschließen.
Also sagen wir, definieren Sie die Wrap-Funktion.
Dies ist also nur ein Wrapper und diese Wrap-Funktion.
Wird eine Funktion sein, die einfach diesen Funk ausführt und dann schließlich nur Wrap zurückgibt.
Funktion und beachte hier, dass ich es nicht aufrufe, sondern es nur zurücksende, damit es später jemand verwenden
kann.
OK, sagen wir jetzt, wir haben eine einfache Funktion, hallo, und diese einfache Funktion, nur Prinz.
Hallo, was für eine nutzlose Funktion.
Nun, warum ist das nützlich, denn jetzt kann ich dies als Dekorateur verwenden Python, sobald wir ein A davor schreiben, wird sagen, hey,
das wird ein Dekorateur und der Dekorateur sein, solange wir folgen die Syntax
des Akzeptierens einer Funktion, des Besitzens einer Wrapper-Funktion, des Aufrufens der Funktion und des Zurückgebens
der Wrapper-Funktion kann verwendet werden.
Also, wenn ich meinen Dekorateur mache, sieh, wie alles blau ist.
Nun, dieser Dekorator kann tatsächlich beim Definieren unserer Funktionen zusätzlich verwendet werden. Wenn wir also meinen Dekorator für die
hallo-Funktion verwenden möchten, verwenden wir ihn so, wenn ich als nächstes hallo in meinem Programm aufrufe.
Ich klicke, renne.
Ich werde hallo.
OK, ich weiß, was du denkst, du denkst, das ist reine Zeitverschwendung, Andre.
Warum musste ich das alles tun?
Ich hätte das einfach tun können, nur um das Hallo zu finden.
Und das war es.
Ich bin so verwirrt.
Nun, hier ist die Sache.
Was wir gerade mit dem Dekorateur gemacht haben.
Hat nichts geändert.
Es funktioniert genau wie erwartet.
Aber was es uns ermöglicht, ist, dass wir jetzt zusätzliche Funktionen hinzufügen können.
Denken Sie daran, wie ich sagte, dass Decorator eine Funktion wie mein Decorator ist, die das hier einschließt, eine andere Funktion, die die Funktion
ist, die wir übergeben.
Und verbessert es, also wie können wir hallo verbessern?
Nun, wir können alles innerhalb dieser umschlossenen Funktion tun, zum Beispiel kann ich Drucken sagen und dann
werden wir hier einfach ein paar Sterne drucken und vielleicht drucken.
Noch ein paar Sterne hier drin, damit wenn ich Ron anrufe.
Boom, wir haben unser Hallo gerade super verstärkt.
Funktion.
Wie cool ist das?
Und deshalb sind Decorator's nützlich, indem ich nur diese eine
Zeile hinzufüge.
Bis und dieser Kauf wird gedruckt.
Bis später.
Indem Sie hier anrufen und auf Ausführen klicken.
Nun, es ändert sich nichts, aber wenn ich es super steigern wollte, muss ich nur
den Decorator kopieren und auch hier verwenden, damit ich ihn ausführen kann.
Los geht's, wir haben unsere super aufgeladen.
Dies ist die Macht von Decorator, indem ich einfach diese Syntax verwende. Ich kann anderen Funktionen zusätzliche Funktionalität
hinzufügen.
Nun, ich weiß, was Sie denken, und ich weiß auch, dass ich das oft sage, als ob ich Gedanken lesen kann,
aber.
Sie denken, das ist eine Menge Magie, wie macht der Python-Interpreter all das?
Es scheint wie, nun ja, Magie, oder?
Unter der Haube funktioniert alles gut, lassen Sie mich Ihnen zeigen, basierend auf dem, was wir bisher über Funktionen
gelernt haben, denn sie sind Bürger erster Klasse, oder?
Alles, was wir tun, ist buchstäblich dies.
Wir sagen Variable A.
Entspricht hallo.
Und dieses Hallo einpacken und mit meinem Dekorateur telefonieren.
Ich sage also mein Dekorateur.
Und danach laufe ich so.
Sagen wir, das war hallo zu gut, ich leite es nur.
Wie so.
Also, wenn ich das starte.
Alles funktioniert noch.
Alles, was ich tue, ist, meine Hallo-Funktion zu verpacken.
Mit meinem Dekorateur und Zuweisen einer Variablen.
Wenn wir also Schritt für Schritt vorgehen, sehen wir, dass mein Dekorateur eine Funktion in unserem Fall die
hallo-Funktion empfängt, und dann diese neu verpackte Funktion zurückgibt, die hier hallo enthält.
Also geben wir diese Rattenfunktion zurück.
Also hallo to now ist gleich dieser umschlossenen Funktion und dann wird diese umschlossene Funktion aufgerufen.
Und wie heißt es mit.
Nun, es druckt dies, dann führt es die Hello-Funktion aus und dann druckt es dies.
Es ist dasselbe, als würde man so etwas tun.
Wir rufen es einfach wieder auf, wenn ich das ausführe.
Es funktioniert, das sieht seltsam aus, nicht wahr, aber es sollte Sinn machen.
Wir rufen die erste Funktion auf und die erste Funktion gibt eine andere Funktion zurück und dann rufen wir
die nächste zurückgegebene Funktion auf, die rep-Funktion ist.
Der Grund, warum Dekorateure nützlich sind, liegt darin, dass ich, anstatt dies zu tun und ehrlich gesagt verwirrend auszusehen,
einfach das bei meinem Dekorateur hinzufügen kann und wir dies nicht alles tun müssen.
Ach, hallo.
Wird automatisch von meinem Dekorateur verpackt.
Aber im Wesentlichen ist dies das, was der Assign tut.
Sehen Sie, nichts Magisches daran.
Im Moment ist das schön, aber ich wette, Sie fragen sich immer noch, warum Dekorateure nützlich sind.
Um unser Verständnis von Dekorateuren wirklich abzuschließen, machen wir eine Pause und wir sehen uns im
nächsten Video.