Zum Inhalt springen

Python

Aus Martins Wiki

Meine Python-Kurse

In den vergangenen Jahren habe ich sowohl an der VHS Tübingen als auch an Tübinger Gymnasien Python-Kurse gegeben. Zur Information der Kursteilnehmer dienten mir Seiten bei wikidot.com und zwar separat für die VHS und Schulen. Beide verweisen auf die nachfolgend beschriebenen Seiten.

Achtung: Die unten verlinkten Seiten stellen Kopien der entsprechenden Seiten unter tuepy.wikidot.com dar! Für eine unbestimmte Zeit sollen beide parallel verfügbar sein.

  • Projekte a.k.a. projects. Diese Projekte sind für den Einsatz in den Kursstunden gedacht.
  • Übungen a.k.a. exercises. Hier finden sich Projekte, die von den Kursteilnehmern wenig Spezialwissen erfordern und damit auch ohne Unterstützung zu bearbeiten sein sollten.
  • Ressourcen a.k.a resources. Nützliche Links und Zusatzwissen.

Python Themen außer Reichweite (beyond scope)

Im Anfänger-Kurs kommen viele Themen mit Python-Bezug aus Zeitgründen mit Absicht nicht vor, sind aber für die professionelle Software-Entwicklung meist unverzichtbar. In den Projekt-Kursen kann es allerdings Ausnahmen geben.

Python-Grundlagen betreffend

Python enthält viele Sprachelemente und Standard-Module, die wir nicht alle behandeln können. Trotzdem muss man sie als ernsthafter Python Entwickler kennen. Für die Sprache selbst bedeutet dies:

Thema Wir beschränken uns auf
Einfache Datentypen bool, int, float, str
Zusammengesetzte Datentypen tuple, list, set, dict (inkl. comprehensions)
Verzweigungen if / elif / else, match / case, try / except *
Schleifen for, while *
Built-In Funktionen bool, int, float, str, list, dir, set, len, abs, max, min, enumerate, input, open, print, range, sum, zip
Built-In Module turtle, random, math, time, tkinter, os
Sprachkonstrukte zur Kapselung Funktionen (def) und Klassen (class)

*) Da gibt's auch nicht mehr!

In den bisherigen Durchläufen des Anfänger-Kurses konnten wir uns eine Diskussion des Laufzeit-Objekt-Modells ersparen. (Variablen-Namen verweisen auf Objekte, die durch Typ, Wert und ID gekennzeichnet sind. Bei Funktionsaufrufen werden Referenzen auf diese Objekte übergeben etc.)

Ebenso verwenden wir nur Pygame und die Matplotlib als separat zu installierende Module.

Wer mehr über Python lernen will, schaue sich tiefer gehende Bücher (z.B. von Mark Lutz oder dieses) bzw. YouTube Videos an oder auch die Python-Original-Dokumentation! Achtung: Letztere kann für Anfänger leicht überwältigend wirken!

Andere Themen mit Python-Bezug

Zum Umfeld der Python-Programm-Entwicklung gehören folgende Themen, die wir nicht adressieren können:

Thema Kommentar
Professionelle Entwicklungsumgebungen z.B. PyCharm, Visual Studio Code. Für unsere Zwecke stellt Thonny den besten Kompromiss zwischen leichter Erlernbarkeit und Benutzbarkeit einerseits und Leistungsfähigkeit andererseits dar.
Jupyter Notebook Eine sehr verbreitete interaktive Programmierumgebung hauptsächlich für komplexe Datenanalyse z.B. in der KI, Gen-Analyse (Biologie) oder auch Astronomie.
Python type hinting Python Variablen können auf beliebige Datentypen verweisen. Das macht Python-Programme, besonders Funktionsaufrufe, fehleranfällig. Darum verwenden alle Profis das sogenannte Type-hinting, um diesen Problemen zu entgehen.
Source Code Versionierung Ohne die Versionierung des Quellcodes z.B. mit Git ist eine professionelle Software-Entwicklung undenkbar.
Automatisches Testen Ohne automatische Tests ist eine professionelle Software-Entwicklung undenkbar. Siehe unittest und Pytest.
Pakete wie numpy, pandas, scipy Beinahe alle professionelle Anwendungen im mathematisch-naturwissenschaftlichen Bereich nutzen diese Pakete.
Dokumentation Beschreibungen von Funktionalität, innerem Aufbau, mathematische Hintergründe, Teststrategie von Software etc. sind im professionellen Umfeld unverzichtbar, erfordern aber eine eigenes Management und Infrastruktur. Hier kann man viel zum Gelingen des Produkts beitragen, aber auch viel unnötigen Ballast generieren.
Modulariserung / Pakete für große Apps Wohl kaum eine professionelle Software findet in einem Modul Platz! Wir können uns aber darauf beschränken.
Nebenläufigkeit / asynchrone / parallele Programm-Ausführung Insbesondere für Web-basierte Programme ist dies wichtig.
Software-Architekturen Sobald die Software größer wird, muss man sich um die globalen Strukturen Gedanken machen. Darum ist Software-Architektur auch eine eigene Disziplin.
Virtual environments (venv) Professionelle Software-Entwicklungsumgebungen bzw. -Produkte müssen oft mit einer Mehrzahl von Versionierungsständen benutzter Pakete umgehen. Die daraus resultierenden Probleme adressieren diese virtuelle Umgebungen.
Reguläre Ausdrücke (regx) Pattern Matching Leistungsfähige Erkennungsalgorithmen für Zeichenketten vermeiden in vielen professionellen Anwendungen die Neuerfindung des Rades.