Es ist Zeit, über Dekorateure zu sprechen.
Ein weiterer Schlüsselbegriff in Python, und wir haben den Decorator schon einmal gesehen.
Erinnern Sie sich, als wir Klassen erstellten, habe ich Ihnen beigebracht, dass es eine Klassenmethode und eine statische Methode gibt,
und ich sagte, hey, machen Sie sich keine Sorgen.
Darüber sprechen wir später.
Nun, das ist jetzt der spätere Dekorateur-Look.
Sie hatten das at-Zeichen und dann eine Art Name dahinter.
Aber damit wir vollständig verstehen, was Decorator sind, müssen wir über Funktionen in Python sprechen und warum sie
so mächtig sind.
Das ist das Schöne an Python in Python-Funktionen sind das, was wir erstklassige Bürger nennen.
Das heißt, sie können wie Variablen weitergegeben werden.
Sie können ein Argument innerhalb einer Funktion sein.
Sie verhalten sich wie, nun ja, Variablen.
Lassen Sie mich Ihnen zeigen, wenn ich eine Halo-Funktion erstelle, die ehrlich gesagt völlig nutzlos ist, weil
sie nur Hallo sagt.
Wenn ich das tue.
Denken Sie daran, dass ich gesagt habe, dass Funktionen in Python so ziemlich nur Variablen sind.
Auch das ist nicht immer bei allen Programmiersprachen der Fall.
Also wenn ich wollte, kann ich Grete gleich hallo sagen.
Damit wenn ich Grete drucke.
Und ich betreibe das.
Ich bekomme hallo, was ist, wenn ich hallo einfach so übergebe, wenn ich das starte?
Nun, ich bekomme den Funktionsspeicherort im Speicher, also müsste ich Grid wie dieses verwenden und es richtig ausführen.
Wir müssen die Hello-Funktion aufrufen.
Okay, was ist, wenn wir das tun?
Was ist, wenn ich Löschen sage?
Hallo, eine Tastatur und Python, die diese Funktion löscht.
Was denkst du wird passieren?
Mal sehen, ob ich das starte.
Hmm, hast du das erwartet?
Hast du erwartet, dass Gier noch funktioniert?
Das Interessante an Python ist, dass ich hallo erstelle und dies jetzt im Speicher erstellt wird. Wenn wir
zu Zeile vier kommen, sage ich, hey, Greet zeigt auf hallo.
Hallo kann also noch hier unten gerufen werden.
Ich kann immer noch hallo sagen, weil hallo der Name der Funktion ist, die auf diese Stelle im Speicher zeigt.
Aber wenn ich hallo lösche, sagt es nur: Hey, ich werde diese Funktion löschen, diesen Namensverweis auf diese Funktion,
die sich im Speicher befindet.
Da aber grüßen noch eine ganz andere Variable auf diese Funktion zeigt.
Ich werde das Hallo-Wort löschen, also wenn ich so hallo gehe.
Ich werde einen Luftnamen bekommen, hallo ist jedoch nicht definiert.
Das Raster zeigt im Speicher immer noch auf diese Position, also ist Python schlau genug zu sagen, hey, du hast mir gesagt, ich
solle hallo löschen, ich werde den Namen hallo löschen, aber ich werde die Funktion nicht löschen,
weil Gier immer noch ist darauf hinweist.
Funktionen in Python verhalten sich also genauso wie Variablen ihre Bürger erster Klasse.
Wir können auch Funktionen übergeben.
Etwa innerhalb von Argumenten, richtig, wenn ich hallo sage und dieses hallo dann eine andere Funktion erhält, die
aufruft, sagen wir.
Funktion so.
Nun, ich kann eine Rasterfunktion erstellen, sagen wir Raster definieren.
Und diese Funktion wird gerade gedruckt.
Immer noch hier.
Nun, hier drin, wenn ich hallo rufe.
Mit.
Grete.
Oder nur damit wir das klarstellen, sagen wir einfach ein Gleich, um Hallo zu grüßen, und wenn ich ein drucke, was passiert?
Das funktioniert immer noch, weil ich sage, hey, rufe die Funktion hallo auf, OK, ich rufe die
Funktion hallo mit dem Argument auf.
Groß.
Also gehen wir hierher und sagen, hey, laufe Funktion und welche Funktion wir diese Funktion nennen wollen.
Richtig, denn wir haben diese Klammern.
Also springen wir zu der Funktion, die in unserem Fall Gier ist.
Also gehen wir hierher und sagen, hey, druck das einfach aus, wir müssen es hier nicht aufrufen, weil die Halo-Funktion
es für uns aufruft.
Warum habe ich dir das alles nur beigebracht?
Was hat das mit Dekoratoren zu tun, die Dekoratoren sind nur aufgrund dieser Eigenschaften möglich,
dieser Fähigkeit von Funktionen, sich wie Variablen zu verhalten, sich wie erstklassige Bürger und Python zu verhalten.
Und wenn wir anfangen, etwas über Dekorateure unter der Haube zu lernen, nutzen sie diese Leistungsfähigkeit.
Von Zeit zu Zeit werden wir in den kommenden Videos darüber sprechen, wie man unsere eigenen
erstellt, was sie bedeuten und diese Idee eines Dekorateurs erweitern.
Aber hier ist die Kurzform dessen, was Dekorateure tun Dekoratoren überladen unsere Funktion, wenn wir unsere, sagen wir hallo,
Funktion hier hätten.
Indem wir eine Art Dekorateur wie diesen hinzufügen, können wir unsere Funktion aufladen und zusätzliche Funktionalität hinzufügen.
Es teilt dem Python-Interpreter mit, dass ich möchte, dass diese hallo-Funktion einige zusätzliche Funktionen hat, aber lassen Sie uns dieses Thema
im nächsten Video etwas genauer untersuchen.