Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Impressum
Einleitung
Über den Autor
Danksagungen
Kapitel 1: Pythons Sicht der Dinge
Punkt 1: Kenntnis der Python-Version
Punkt 2: Stilregeln gemäß PEP 8
Punkt 3: Unterschiede zwischen bytes und str
Punkt 4: Interpolierte F-Strings statt C-Formatierungsstrings und str.format
Punkt 5: Hilfsfunktionen statt komplizierter Ausdrücke
Punkt 6: Mehrfachzuweisung beim Entpacken statt Indizierung
Punkt 7: enumerate statt range
Punkt 8: Gleichzeitige Verarbeitung von Iteratoren mit zip
Punkt 9: Verzicht auf else-Blöcke nach for- und while-Schleifen
Punkt 10: Wiederholungen verhindern durch Zuweisungsausdrücke
Kapitel 2: Listen und Dictionaries
Punkt 11: Zugriff auf Listen durch Slicing
Punkt 12: Verzicht auf Abstand und Start-/Ende-Index in einem einzigen Ausdruck
Punkt 13: Vollständiges Entpacken statt Slicing
Punkt 14: Sortieren nach komplexen Kriterien mit dem key-Parameter
Punkt 15: Vorsicht bei der Reihenfolge von dict-Einträgen
Punkt 16: get statt in und KeyError zur Handhabung fehlender Dictionary-Schlüssel verwenden
Punkt 17: defaultdict statt setdefault zur Handhabung fehlender Objekte verwenden
Punkt 18: Schlüsselabhängige Standardwerte mit __missing__ erzeugen
Kapitel 3: Funktionen
Punkt 19: Bei Funktionen mit mehreren Rückgabewerten nicht mehr als drei Variablen entpacken
Punkt 20: Exceptions statt Rückgabe von None
Punkt 21: Closures und der Gültigkeitsbereich von Variablen
Punkt 22: Klare Struktur dank variabler Anzahl von Positionsargumenten
Punkt 23: Optionale Funktionalität durch Schlüsselwort-Argumente
Punkt 24: Dynamische Standardwerte von Argumenten mittels None und Docstrings
Punkt 25: Eindeutigkeit durch reine Schlüsselwort- und reine Positionsargumente
Punkt 26: Funktions-Decorators mit functools.wraps definieren
Kapitel 4: Listen-Abstraktionen und Generatoren
Punkt 27: Listen-Abstraktionen statt map und filter
Punkt 28: Nicht mehr als zwei Ausdrücke in Listen-Abstraktionen
Punkt 29: Doppelte Arbeit in Abstraktionen durch Zuweisungsausdrücke vermeiden
Punkt 30: Generatoren statt Rückgabe von Listen
Punkt 31: Vorsicht beim Iterieren über Argumente
Punkt 32: Generatorausdrücke für umfangreiche Listen-Abstraktionen verwenden
Punkt 33: Mehrere Generatoren mit yield from verknüpfen
Punkt 34: Keine Datenübermittlung an Generatoren mit send
Punkt 35: Zustandsübergänge in Generatoren mit throw vermeiden
Punkt 36: Iteratoren und Generatoren mit itertools verwenden
Kapitel 5: Klassen und Schnittstellen
Punkt 37: Klassen statt integrierte Datentypen verschachteln
Punkt 38: Funktionen statt Klassen bei einfachen Schnittstellen
Punkt 39: Polymorphismus und generische Erzeugung von Objekten
Punkt 40: Initialisierung von Basisklassen durch super
Punkt 41: Verknüpfte Funktionalität mit Mix-in-Klassen
Punkt 42: Öffentliche statt private Attribute
Punkt 43: Benutzerdefinierte Container-Klassen durch Erben von collections.abc
Kapitel 6: Metaklassen und Attribute
Punkt 44: Einfache Attribute statt Getter- und Setter-Methoden
Punkt 45: @property statt Refactoring von Attributen
Punkt 46: Deskriptoren für wiederverwendbare @property-Methoden verwenden
Punkt 47: Verzögerte Zuweisung zu Attributen mittels __getattr__, __getattribute__ und __setattr__
Punkt 48: Unterklassen mit __init_subclass__ überprüfen
Punkt 49: Klassen mittels __init_subclass__ registrieren
Punkt 50: Zugriff auf Klassenattribute mit __set_name__
Punkt 51: Klassen-Decorators statt Metaklassen für Klassenerweiterungen nutzen
Kapitel 7: Nebenläufigkeit und parallele Ausführung
Punkt 52: Verwaltung von Kindprozessen mittels subprocess
Punkt 53: Threads, blockierende Ein-/Ausgabevorgänge und parallele Ausführung
Punkt 54: Wettlaufsituationen in Threads mit Lock verhindern
Punkt 55: Threads koordinieren mit Queue
Punkt 56: Erkennen, wann parallele Ausführung erforderlich ist
Punkt 57: Keine neuen Thread-Instanzen beim Fan-Out
Punkt 58: Die Verwendung von Queue zur parallelen Ausführung erfordert Refactoring
Punkt 59: ThreadPoolExecutor zur parallelen Ausführung verwenden
Punkt 60: Parallele Ausführung mehrerer Funktionen mit Coroutinen
Punkt 61: asyncio statt threaded I/O
Punkt 62: Threads und Coroutinen verwenden, um die Umstellung auf asyncio zu erleichtern
Punkt 63: asyncio-Event-Loop nicht blockieren
Punkt 64: Echte parallele Ausführung mit concurrent.futures
Kapitel 8: Robustheit und Performance
Punkt 65: Alle Blöcke einer try/except/else/finally-Anweisung nutzen
Punkt 66: contextlib und with-Anweisung für wiederverwendbares try/finally-Verhalten verwenden
Punkt 67: Für örtliche Zeitangaben datetime statt time verwenden
Punkt 68: Verlässliches pickle durch copyreg
Punkt 69: Falls Genauigkeit an erster Stelle steht, decimal verwenden
Punkt 70: Vor der Optimierung Messungen vornehmen
Punkt 71: deque für Erzeuger-Verbraucher-Warteschlangen verwenden
Punkt 72: Durchsuchen von Sequenzen geordneter Elemente mit bisect
Punkt 73: heapq für Prioritätswarteschlangen verwenden
Punkt 74: memoryview und bytearray für Zero-Copy-Interaktionen mit bytes verwenden
Kapitel 9: Testen und Debuggen
Punkt 75: Debuggen mit repr-Strings
Punkt 76: Ähnliches Verhalten mit TestCase-Unterklassen überprüfen
Punkt 77: Tests mit setUp, tearDown, setUpModule und tearDownModule voneinander abschotten
Punkt 78: Mocks für Tests von Code mit komplexen Abhängigkeiten verwenden
Punkt 79: Abhängigkeiten kapseln, um das Erstellen von Mocks und Tests zu erleichtern
Punkt 80: Interaktives Debuggen mit pdb
Punkt 81: Nutzung des Arbeitsspeichers und Speicherlecks mit tracemalloc untersuchen
Kapitel 10: Zusammenarbeit
Punkt 82: Module der Python-Community
Punkt 83: Virtuelle Umgebungen zum Testen von Abhängigkeiten
Punkt 84: Docstrings für sämtliche Funktionen, Klassen und Module
Punkt 85: Pakete zur Organisation von Modulen und zur Bereitstellung stabiler APIs verwenden
Punkt 86: Modulweiter Code zur Konfiguration der Deployment-Umgebung
Punkt 87: Einrichten einer Root-Exception zur Abschottung von Aufrufern und APIs
Punkt 88: Zirkuläre Abhängigkeiten auflösen
Punkt 89: warnings für Refactoring und Migration verwenden
Punkt 90: Statische Analyse mit typing zum Vermeiden von Bugs
← Prev
Back
Next →
← Prev
Back
Next →