Bonus

Notizen

Ich hoffe, Ihnen mit der Vorlesung einen kleinen Einblick in die Programmierung mit Python gegeben zu haben. Sie sollten nun in der Lage sein, kleine Skripte zu schreiben, die z.B. bei der Arbeit im Labor Zeit und Mühe sparen. In der Vorlesung selbst konnten wir nur die wichtigsten Python-Datentypen und -Befehle sowie und grundlegende Techniken behandeln. Es gibt darüber hinaus noch viel mehr zu lernen - hier eine Reihe von Vorschlägen:

  • Programmiertechniken

    • objektorientierte Programmierung

      Bei der objektorientierten Programmierung werden Daten und Funktionen (Methoden), die auf diese Daten angewendet werden können, zu einer logischen Einheit (einem Objekt) verbunden. Das erleichtert die Wiederverwendbarkeit des Codes.

      Die Kapitel 15 bis 18 in Think Python behandeln die Grundlagen des (sehr umfangreichen) Themas.

    • graphische Nutzeroberflächen

      Es existiert eine Vielzahl von Bibliotheken, mit deren Hilfe Python-Programme eine graphische Benutzeroberfläche erhalten können. Kostenlose Pakete sind zum Beispiel Tkinter, das mit Python zusammen ausgeliefert wird (die Shell IDLE basiert selbst darauf), oder PyQt oder wxPython.

    • automatisiertes Versionsmanagement (= Source Control Management)

      Sobald ein Software-Projekt eine gewisse Größe übersteigt und aus mehreren Dateien besteht, wird es schwierig, den Überblick über den Code zu behalten. Insbesondere experimentelle Änderungen am Code, die ggf. wieder zurückgenommen werden müssen, bewirken schnell ein chaotische Mischung von verschiedenen Versionen ein- und derselben Datei. Das Problem potenziert sich, wenn mehrere Personen an einem Projekt arbeiten. Für diese Fälle wurde das Versionsmanagement erfunden, das es unter anderem gestattet, vom aktuellen Entwicklungsstand einen Schnappschuss zu machen, der bei Bedarf wiederhergestellt werden kann.

      Das Standard-Tool dafür ist: Git.

    • automatisierte Unit-Tests

      Für größere Projekte ist es angeraten, die Funktionalität von Modulen, Funktionen usw. automatisch zu testen, d.h. die Ergebnisse des Aufrufs mit definierten Eingabewerten mit den erwarteten Ausgabewerten zu vergleichen. Dadurch wird die korrekte Funktion des Codes sichergestellt. In Python stellt das Modul unittest dafür Funktionen bereit.

    • Exceptions

      Exceptions ermöglichen die intelligente Behandlung von Fehlern, die während des Programmlaufs auftreten, so dass dieser nicht unbedingt abgebrochen werden muss.

      Eine gute Übersicht dazu bietet dieses Tutorial auf der Python-Webseite. Dort finden Sie auch eine Liste der vordefinierten Exceptions.

      Ein Beispielskript demonstriert die Anwendung.

  • spezielle Pakete und Module

    • String Formatierung

      string.format() bietet einen sehr flexiblen Mechanismus zur einfachen Ausgabe von formatierten Strings. Damit können zum Beispiel Fließkommazahlen auf eine bestimmte Anzahl von Dezimalstellen oder Spalten von Daten bündig ausgegeben werden.

       1import math
       2
       3print('The value of PI is approximately %5.3f.' % math.pi)
       4# Der %-Operator ist die veraltete Version der String-Formatierung.
       5# die .format-Funktion ist die neuere und bevorzugte Möglichkeit der String-Formatierung.
       6
       7
       8print('{0} and {1}'.format('spam', 'eggs'))
       9
      10print('{1} and {0}'.format('spam', 'eggs'))
      11
      12for x in range(1,11):
      13    print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
      14
      15print('This {food} is {adjective}.'.format(food='spam', adjective='absolutely horrible'))
      16
      

      Ab Python Version 3.6 ist die beste Möglichkeit zur Formatierung die Verwendung von sog. F-Strings. (Artikel)

    • das Modul datetime

      Das datetime-Modul stellt mehrere nützliche Kalender- und Zeitumrechnungsfunktionen zur Verfügung. Mit ihrer Hilfe lässt sich zum Beispiel die Spanne zwischen zwei Zeitpunkte ausrechnen (Wieviel Zeit vergeht zwischen dem 01.01.2013 08:43 Uhr MEZ und dem 15.03.2013 21:14 Uhr EST?) oder der Wochentag für ein bestimmtes Datum ausrechnen. Auch die Ausgabe von Daten und Zeiten in verschiedenen Formaten wird unterstützt.

    • relationale Datenbanken mit dem Modul sqlite

      SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. (Webseite)

      In Python steckt diese Funktionalität im Modul sqlite3, das in der Python-Standardbibliothek enthalten ist.

    • Webseiten abrufen mit requests, Webscraping mit Beautiful Soup

      Obwohl Python selbst Module für die Kommunikation im Netz mitbringt, wird die Benutzung durch die Verwendung des Zusatzmoduls requests wesentlich erleichtert. Damit können Webseiten einfach abgerufen werden. Für die Analyse der gelieferten HTML-Datei, z. B. das gezielte Auslesen von bestimmten Webseitenelementen, eignet sich das Modul Beautiful soup.

    • dreidimensionale Datendarstellung mit Mayavi

      Mayavi ist ein sehr mächtiges Visualisierungstool speziell für dreidimensionale Daten. Allerdings ist es auch deutlich komplexer als Matplotlib. Die Galerie auf der Seite der Entwickler zeigt ein paar Möglichkeiten.