Effective Python ist Brett Slatkins Buch über Python-Best-Practices, erschienen bei Addison-Wesley und aufgebaut als Katalog kurzer, in sich geschlossener Items, jedes eine konkrete Regel mit Begründung und Trade-offs. Die Items behandeln pythonischen Stil, Comprehensions und Generatoren, Funktionsargumente, Klassendesign mit Properties, Metaklassen, Nebenläufigkeit unter dem GIL, Robustheit und Testen. Die aktuelle 3. Auflage vom 20. November 2024 erweitert die 90 Items der 2. Auflage auf 125.
Effective Python
Details
Kernkonzepte:
- Item-Format
-
Ein Katalog von ~125 kurzen, in sich geschlossenen "Items", jedes eine konkrete Best-Practice-Regel mit Begründung und Trade-offs (in Kapiteln gruppiert)
- Pythonisches Denken
-
Dem PEP-8-Stil und dem Zen of Python folgen; f-Strings gegenüber
%undstr.formatbevorzugen; den Unterschied zwischenbytesundstrkennen; Hilfsfunktionen komplexen Ausdrücken vorziehen - Listen und Dictionaries
-
Comprehensions gegenüber
map/filterbevorzugen;enumeratestattrangeverwenden;zipzum parallelen Iterieren nutzen; Catch-all-Unpacking statt Indizierung;else-Blöcke nachfor/whilevermeiden - Funktionen
-
Exceptions dem Rückgabewert
Nonevorziehen; Klarheit durch keyword-only- und positional-only-Argumente erzwingen; Generatoren statt aufgebauter Listen zurückgeben; veränderliche Default-Argumente nie modifizieren (Noneund Docstrings verwenden) - Comprehensions und Generatoren
-
Generator-Ausdrücke für große Comprehensions verwenden; Generatoren mit
yield fromkomponieren;itertoolsnutzen, bevor man Iteration selbst schreibt - Klassen und Interfaces
-
Klassen komponieren, statt Dicts/Tupel tief zu verschachteln;
@classmethod-Polymorphie nutzen; öffentliche Attribute und@propertygegenüber Gettern/Settern bevorzugen; Funktionen statt Klassen für einfache Interfaces verwenden - Metaklassen und Attribute
-
@propertyund Deskriptoren für wiederverwendbares Attributverhalten nutzen;getattr/getattributesparsam einsetzen; Subklassen mitinit_subclassvalidieren - Nebenläufigkeit und Parallelität
-
Threads für blockierende I/O nutzen, nicht für Parallelität (das GIL);
Queuezur Koordination von Pipelines; Coroutinen undasynciofür viele nebenläufige Funktionen;concurrent.futuresund Prozesse für echte Parallelität - Robustheit, Testen und Zusammenarbeit
-
Programme robust und performant machen (neue Kapitel in der 3. Auflage); mit
unittest/Mocktesten; mit Docstrings dokumentieren; Abhängigkeiten mit virtuellen Umgebungen (venv) isolieren - Schlüsselvertreter
-
Brett Slatkin ("Effective Python", Addison-Wesley) — Principal Software Engineer bei Google und Autor der lauffähigen Beispielsammlung des Buches
Wann zu verwenden:
-
Einarbeitung von Python-Entwicklern in idiomatischen, robusten ("pythonischen") Code
-
Code-Review-Diskussionen auf Basis eines gemeinsamen, zitierbaren Regelsatzes ("Item 30: consider generators instead of returning lists")
-
Etablierung teamweiter Python-Coding-Standards und Konventionen
-
Erklärung Python-spezifischer Idiome und Fallstricke (Comprehensions, Generatoren, das GIL,
@property, keyword-only-Argumente) -
Aufforderung an ein LLM, idiomatischen, produktionsreifen Python-Code zu erzeugen
Verwandte Anker:
Aktueller Status:
-
Die 3. Auflage (Pearson Addison-Wesley, erschienen am 20. November 2024, ISBN 978-0-13-817218-3) ist die aktuelle Auflage. Sie erweitert die 90 Items der 2. Auflage auf 125 Items — 35 neue Items sowie zwei neue Kapitel zu Robustheit und Performance
-
Die 1. Auflage (2015) adressierte Python 2 und 3; die 2. Auflage (2019) war Python-3-only bis ~3.8; die 3. Auflage deckt modernes Python 3 ab, einschließlich Features wie den Walross-Operator, strukturelles Pattern Matching sowie aktualisierte Typing- und
asyncio-Empfehlungen -
Die Kernaussagen des Buches (Comprehensions und Generatoren bevorzugen, das GIL respektieren, Klassen komponieren,
@propertynutzen) bleiben über die Auflagen stabil; nur einzelne Items folgen der Sprache. Ein auf "Effective Python" geprägter Trainingsdaten-Prior spiegelt am ehesten die 2. Auflage (90 Items) wider und schweigt daher zu den 35 in der 3. Auflage ergänzten Items