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 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.

      Verbreitete Tools sind Git und Mercurial.

    • 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.

    • Python 3

      Die Entwicklung von Python 2.x ist mit der Version 2.7 beendet (derzeit 2.7.3), d.h. es kommen keine neuen Funktionen mehr hinzu, nur noch Fehlerbereinigungen. Die Fortentwicklung der Sprache findet im Zweig Python 3.x (derzeit 3.3.0) statt. Viele Funktionen sind neu hinzugekommen, aber auch die Syntax der Sprache hat sich z.T. verändert. Das führt dazu, dass Python 2.x-Programme in der Regel mit einem Python 3.x-Interpreter nicht mehr ohne weiteres ausgeführt werden können. Viele nützliche Softwarepakete sind im Moment noch nicht vollständig mit Python 3 kompatibel, aber der Trend geht in diese Richtung.

      Eine Entscheidungshilfe, welchen Python-Dialekt Sie für Ihre Zwecke benutzen sollten, finden Sie hier.

  • 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.

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

    • 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.

    • Dokumentationserstellung mit sphinx

      Das Paket Sphinx wurde (in Python) geschrieben, um die Dokumentation speziell von Python-Projekten zu erleichtern. Aus den Quelldateien eines Sphinx-Projektes können dann z.B. Webseiten (in verschiedenen Layouts), Textdateien, E-Books oder auch LaTeX-Quellen und damit PDF-Dateien generiert werden. Das Einbinden von Python-Beispielcode, von Bildern, mathematischen Formeln wird dabei erleichtert. So wurde z.B. diese Webseite mit Sphinx erstellt. Unter dem Link Quelltext anzeigen in der Menüspalte können Sie auch den Quelltext für die gerade angezeigte Seite sehen.

Was ist prüfungsrelevant?

  • Datentypen (Zahlen, Strings, Listen, Tupel, Dictionaries) und assozierte Funktionen
  • Basis-Sprachelemente (Variablen, Zuweisungen, Operatoren, if, while, for, Funktionen, Module)
  • Umgang mit Textdateien
  • Sie sollten in der Lage sein, ein gegebenes Skript aus diesen Elementen zu analysieren, darin enthaltene Fehler zu finden und zu beheben, und eigene Skripte mit der Komplexität der Skripte aus den Übungsaufgaben zu schreiben.
  • Wenn Sie den Sudoku-Solver von Peter Norvig verstehen, sind Sie mehr als gut gerüstet.
  • nicht: NumPy, SciPy, Matplotlib, Biopython, Bonusmaterial