Typhinweise und statische Typisierung mit Python und mypy meistern
Typhinweise und statische Typisierung mit Python und mypy meistern
Ein praxisorientierter Leitfaden zur Verwendung von Typannotationen und statischer Codeanalyse mit mypy
Inhaltsverzeichnis
Kapitel 1: Einführung in Typisierung in Python
- Dynamische vs. statische Typisierung
- Warum Typannotationen in Python?
- Vorteile: Lesbarkeit, Wartbarkeit, Fehlervermeidung
- Überblick über mypy und typing-Modul
Kapitel 2: Typhinweise für Funktionen und Variablen
- Basis-Syntax für Argumente und Rückgabewerte
- Typhinweise für lokale und globale Variablen
- None, Optional, Any, NoReturn verstehen
- Mini-Projekt: Typannotationen in Utility-Funktionen einführen
Kapitel 3: Arbeiten mit generischen Typen
- List, Dict, Tuple, Set
- Iterable, Sequence, Mapping
- Typalias für wiederverwendbare Konstrukte
- Mini-Projekt: Typsicheres Datenmodell mit generischen Containern
Kapitel 4: Klassen und OOP mit Typen
- Typhinweise für Attribute, Methoden und Konstruktoren
- self und cls korrekt typisieren
- Klassenhierarchien und Vererbung
- Mini-Projekt: OOP-Struktur für Rechnungswesen mit Typunterstützung
Kapitel 5: Fortgeschrittene Typisierung mit Union, Literal und TypedDict
- Alternative Typen mit Union
- Exakte Werte mit Literal
- Strukturelle Typisierung mit TypedDict
- Mini-Projekt: Konfigurationsdatei mit TypedDict validieren
Kapitel 6: Funktionen höherer Ordnung und Callables
- Funktionen als Argumente und Rückgabewerte
- Callable vs. Protocol
- Typisierung von Lambdas und Decorators
- Mini-Projekt: Validierter Funktions-Dispatcher
Kapitel 7: Verwendung von mypy im Entwicklungsworkflow
- mypy installieren und ausführen
- Konfigurationsdateien und Ignore-Kommentare
- Ausgabe interpretieren und Fehler beheben
- Integration in CI/CD-Prozesse
- Mini-Projekt: Analyse und Fix eines bestehenden Codes mit mypy
Kapitel 8: Typsicherheit bei Drittanbieterbibliotheken
- Umgang mit ungetypten Bibliotheken
- Verwendung von Typ-Stubs (.pyi)
- types- Pakete aus typeshed und types-* auf PyPI
- Mini-Projekt: Externe Bibliothek in typisierten Code einbinden
Kapitel 9: Best Practices für typisierten Python-Code
- Wann typisieren – und wann bewusst nicht?
- Stufenweiser Übergang mit --strict, --disallow-untyped-defs
- Dokumentation und automatische Codevervollständigung
- Tipps für große Codebasen
Kapitel 10: Ausblick – Typing in Python 3.11+ und PEPs
- Neue Features wie Self, Required, NotRequired, ParamSpec
- dataclasses mit Typhinweisen
- Relevante PEPs (PEP 484, 563, 604, 649, 695 usw.)
- Zukunft der Typisierung in Python
Anhang A: Übersicht häufig verwendeter Typen und Konstrukte
- List[str], Optional[int], Dict[str, Union[int, str]], etc.
Anhang B: mypy-Optionen und Konfiguration
- mypy.ini, --strict, --ignore-missing-imports, uvm.
- Beispielkonfiguration für kleine und große Projekte
Anhang C: Übungsaufgaben mit Lösungen
- Funktionen und Klassen mit Typhinweisen ausstatten
- Fehler mit mypy erkennen und korrigieren
- Eigene TypedDict und Callable-Typen erstellen
- Lösungen mit Schritt-für-Schritt-Erklärung