Python für Fortgeschrittene: Wenn du Machine Learning mit Python machst, brauchst du nicht unbedingt alle Eigenschaften dieser Sprache zu verwenden: scikit-learn, numpy und pandas sind sehr gut entwickelt und erfordern nicht viel mehr als Grundlagen der objektorientierten Programmierung und ein wenig methodisches Geschick.
Manchmal besteht die Arbeit des Data Scientists jedoch darin, APIs zu erstellen, um auf ein Modell oder Daten zuzugreifen. Bei uns ist dafür der Data Engineer zuständig, aber in vielen Organisationen ist der Data Scientist dafür zuständig. Ein Unternehmen wie Amazon erstellt zum Beispiel alle seine Funktionen in Form von APIs. Es ist daher unerlässlich, sich neben Kenntnissen über Machine Learning, Deep Learning, Data Visualization und verschiedene statistische Techniken zur Datenexploration auch mit APIs vertraut zu machen.
Um nicht auf seine Lieblingssprache verzichten zu müssen, wird der Data Scientist dann natürlich auf Flask zurückgreifen. Flask ist eine der Technologien, die wir in unserem Data-Engineering-Kurs vorstellen.
Flask ist schön und gut, aber...
Wenn du die Syntax einmal verstanden hast, ist Flask sehr einfach zu benutzen. Aber wenn du es zum ersten Mal benutzt, wirst du mit dieser Art von Code konfrontiert:
Diese @app.route direkt aus der Hölle, die Dein gesamtes Verständnis von Python in Frage stellt…
Python für Fortgeschrittene: Dekorateure
Dieses @ wird in Python verwendet, um einen Dekorateur einzuführen (und nein, er ist nicht einfach nur da, um schön auszusehen…). Es steht direkt vor einer Funktion und ermöglicht es, die Funktion in eine andere Funktion, den Wrapper, einzuwickeln (wrap).
Wenn ich also eine Funktion erstellen möchte, die die Zeit misst und anzeigt, die eine Funktion benötigt, um zu laufen, kann ich sie wie folgt implementieren:
Diese Funktion nimmt eine Funktion als Argument (function, wie der Name schon sagt), definiert darin eine neue Funktion (timed_function) und gibt die neue Funktion zurück.
Wenn ich also einen Dekorateur benutze, kann ich sehen, dass die Zeit am Ende der Ausführung angezeigt wird.
Dekoratoren sind sehr nützlich, um den Datentyp zu überprüfen und um Informationen über die Funktionsweise der Funktion anzuzeigen, ohne sie in jeder Funktion neu codieren zu müssen. Sie werden vor allem in Flask verwendet, aber auch in vielen Quellcodes unserer Lieblingsbibliotheken: Hier ein paar Beispiele: Nummer eins, Nummer 2, und Nummer 3.
Gehen wir noch einen Schritt weiter ...
Als ich das gesehen habe, habe ich mir ein paar Fragen gestellt (und nicht nur, ob es wirklich nützlich ist).
Kann man Argumente an den Dekorierer übergeben und nicht an die dekorierte Funktion? Ja, aber die Syntax ist etwas komplizierter:
Kann man Dekorateure aneinanderreihen? Kein Problem:
Kann man Methoden dekorieren? Ja
Kann man Klassen dekorieren? Ja
Dekorateure sind ein ziemlich interessantes Werkzeug. Sie scheinen auf den ersten Blick überraschend zu sein, aber wenn Du erst einmal verstanden hast, wie sie funktionieren, kannst Du Dir die Arbeit erleichtern. Du wirst ihnen nicht jeden Tag begegnen, aber wenn es doch passiert, dann weisst Du jetzt Bescheid…
Hat Dir dieser Artikel gefallen? Dann melde Dich für unseren Newsletter an und erhalte Datentipps, die Du sonst nirgends findest!