Johannes C. Hofmeister
Python für Dummies Alles-in-einem-Band
Johannes C. Hofmeister
Python für Dummies Alles-in-einem-Band
- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Python programmieren lernen lohnt sich. Es ist eine moderne sich ständig weiterentwickelnde Programmiersprache. Dieses Buch hilft Ihnen, wenn Sie Python von der Pike auf lernen wollen, aber auch mehr als nur die Grundlagen verstehen wollen. Johannes Hofmeister erklärt Ihnen Grundlagen wie Syntax, Module und Basic-Funktionen und schreitet dann zu fort zu höheren Konzepten wie Funktionen und Objekte. Er zeigt Ihnen auch, wie Sie diese testen können, um fehlerfrei Software zu schreiben. Danach widmet sich der Autor Internettechnologien wie E-Mail, Apis und Browsing und erklärt Ihnen, wie Sie mit…mehr
Andere Kunden interessierten sich auch für
- Michael KaufmannGit für Dummies28,00 €
- Jürgen LampeClean Code für Dummies22,00 €
- Sebastian DörnPython lernen in abgeschlossenen Lerneinheiten32,99 €
- Tobias HäberleinProgrammieren mit Python37,99 €
- Allen B. DowneyPython lernen mit KI-Tools29,90 €
- Joseph SchmullerR Alles-in-einem-Band für Dummies34,00 €
- Claudia ErmelProgrammieren und zeichnen mit Python für Dummies Junior18,00 €
-
-
-
-
-
-
-
Python programmieren lernen lohnt sich. Es ist eine moderne sich ständig weiterentwickelnde Programmiersprache. Dieses Buch hilft Ihnen, wenn Sie Python von der Pike auf lernen wollen, aber auch mehr als nur die Grundlagen verstehen wollen. Johannes Hofmeister erklärt Ihnen Grundlagen wie Syntax, Module und Basic-Funktionen und schreitet dann zu fort zu höheren Konzepten wie Funktionen und Objekte. Er zeigt Ihnen auch, wie Sie diese testen können, um fehlerfrei Software zu schreiben. Danach widmet sich der Autor Internettechnologien wie E-Mail, Apis und Browsing und erklärt Ihnen, wie Sie mit Django eine Webanwendung bauen. Sie erfahren, wie Sie mithilfe von Python komplexe Datensätze analysieren und zuletzt beweist Ihnen der Autor, wie vielseitig nutzbar Python ist.
Produktdetails
- Produktdetails
- ...für Dummies
- Verlag: Wiley-VCH
- Artikelnr. des Verlages: 1171849 000
- 1. Auflage
- Seitenzahl: 800
- Erscheinungstermin: 2. Juli 2025
- Deutsch
- Abmessung: 240mm x 176mm
- ISBN-13: 9783527718498
- ISBN-10: 3527718494
- Artikelnr.: 66214612
- Herstellerkennzeichnung
- Wiley-VCH GmbH
- Boschstraße 12
- 69469 Weinheim
- wiley.buha@zeitfracht.de
- ...für Dummies
- Verlag: Wiley-VCH
- Artikelnr. des Verlages: 1171849 000
- 1. Auflage
- Seitenzahl: 800
- Erscheinungstermin: 2. Juli 2025
- Deutsch
- Abmessung: 240mm x 176mm
- ISBN-13: 9783527718498
- ISBN-10: 3527718494
- Artikelnr.: 66214612
- Herstellerkennzeichnung
- Wiley-VCH GmbH
- Boschstraße 12
- 69469 Weinheim
- wiley.buha@zeitfracht.de
Johannes Hofmeister lebt in Heidelberg. Am Psychologischen Institut der Universität Heidelberg erforscht er zur Zeit, was Code verständlich macht. Als Softwareentwickler und Berater hat er in großen und kleinen Unternehmen C#, Java und JavaScript eingesetzt, aber am liebsten liest und schreibt er Python-Code.
Inhaltsverzeichnis
Über den Autor 27
Danksagung 29
Einleitung 31
Törichte Annahmen über die Leser 31
Wie Sie dieses Buch nutzen können 32
Was Sie nicht lesen müssen 32
Wie dieses Buch aufgebaut ist 32
Symbole, die in diesem Buch verwendet werden 34
Konventionen in diesem Buch 35
TEIL I
Willkommen in Python-City 37
Kapitel 1
Python - eine Hochglanzbroschüre 39
Was Python so interessant macht 40
Dunkle Flecken - was an Python manchmal nicht so schön ist 41
Infrastruktur und Dienstleistungen 42
Haushalt und Wirtschaft 43
Politische Entscheidungsprozesse 44
Philosophie 44
Willkommen 45
Kapitel 2
Der Einzug in die neue Wohnung 47
Was wird installiert? 47
Windows 48
1 Installer herunterladen 48
2 Features auswählen 49
3 Anpassungen vornehmen 50
4 Installieren 50
5 Installation prüfen 51
macOS 52
1 Installer herunterladen 52
2 Installer ausführen 52
3 Ziel auswählen 52
4 Installation anpassen 52
4 Abwarten und Tee trinken 53
5 Installation testen 53
12 Inhaltsverzeichnis
Linux 54
Ubuntu 54
Fedora 55
Einer für alle 56
Windows 56
Linux56
macOS 57
Kapitel 3
Die Nachbarschaft kennenlernen 59
Die Kommandozeile starten 59
Windows 60
macOS 60
Linux60
Auf der Kommandozeile 61
Wo bin ich?62
Befehle für die Kommandozeile 63
Code ausprobieren 65
Die Wahl des Editors 66
Programme ausführen 67
Kapitel 4
Exposition auf dem Stadtfest - ein erster Blick in den Code 69
Ausführung 71
Vogelperspektive 72
Ein Docstring 74
Eine Zahl ausdenken 75
Eine erste Runde drehen 75
Raten 76
Hast du einen Tipp? 79
Weiter geht's! 80
Kapitel 5
Syntax - die lokale Mundart 81
Verschiedene Ausdrucksformen 81
Zeilen 82
Schlüsselwörter, Anweisungen und Ausdrücke 84
Zusammengesetzte Anweisungen 86
Einrückung 87
Variablen 89
Namensfindung 90
Literale 91
Objekte 93
Inhaltsverzeichnis 13
TEIL II
Alles unter Kontrolle 95
Kapitel 6
Mit Wenn und Aber - Bedingungen stellen 97
Verzweigungen im Programmablauf97
If-Anweisungen 98
If-Ausdrücke100
Musterabgleiche101
Kapitel 7
Anweisungen wiederholen mit Schleifen 105
Wiederholungen mit while 105
Break and Continue 107
For-Schleifen 109
Kapitel 8
Der eingebaute Taschenrechner - ein bisschen Mathe 113
Zahlen 113
Exkurs: Zahlensysteme114
Binärzahlen 115
Hexadezimalzahlen 116
Konvertieren 117
Große Zahlen 117
Kommazahlen 118
Festkommazahlen 119
Brüche 120
Rechnen 120
Operatorrangfolge 123
Funktionen für mathematische Probleme 123
Kapitel 9
Wahrheit oder Pflicht - logische Ausdrücke formulieren 125
Wahrheitswerte 125
Truthy-Falsy 126
Vergleichsoperatoren 128
Verneinung 129
Logische Operatoren 130
AND - logisches Und 130
OR - logisches Oder 131
XOR - logisches Entweder-Oder132
Logische Gesetze 134
Distributivgesetz 135
De-Morgansche Gesetze137
Tipps139
14 Inhaltsverzeichnis
Kapitel 10
Verpackungstechnik - eingebaute Container-Datentypen 141
Listen 141
Listen aufbauen und bearbeiten 142
Metadaten abfragen 144
Sortieren 146
Einzelne Elemente abfragen 146
Listen zerschnippeln - Slicing 147
Tupel 149
Einpacken - Auspacken 151
Benannte Tupel 153
Dictionarys154
Dictionarys iterieren 155
Schlüsseldienst 156
Sets157
Einmalige Elemente 157
Teilmengen159
Schnittmenge 160
Vereinigungsmenge 161
Differenzmenge 163
Symmetrische Differenz 163
Zusammenfassung 164
Weitere Datentypen 164
Frozensets 165
Bytes und Byte-Array 165
Arrays, Structs165
und viele andere mehr166
Kapitel 11
Comprehensions - selbstverständliche Listen 167
List-Comprehensions 168
Iteration 169
Projektion 169
Selektion 170
Set-Comprehensions 171
Dict-Comprehensions 171
Generatoren statt Tupel-Comprehensions 172
Beispiel: Ein Balkendiagramm173
Schleife oder Comprehension?176
Sonderfälle177
"ftoc-new_PrintPDF" - 2025/4/23 - 1:53 - page 15 - #5
Inhaltsverzeichnis 15
TEIL III
Buchstabensuppe 179
Kapitel 12
Strings - Python als Schreibmaschine 181
Auf einen Blick 182
Syntax 183
String-Objekte 183
Mehrzeilige Strings 183
Gemischte Anführungszeichen184
Ausbruch mit Escape-Zeichen 185
Texte einlesen 185
Texte ausgeben 186
Steuerzeichen 188
str - Objekte in Strings konvertieren190
Variablen im Text formatieren190
Interpolation mit f-Strings 191
Früher war %(alle)s anders 192
Explizites Formatieren 193
Minisprache zur Formatierung193
Zahlen anders darstellen193
Zahlen runden 194
Werte ausrichten und auffüllen 194
Datumsangaben formatieren 195
Wichtige Methoden 196
Kapitel 13
Mit regulären Ausdrücken Buchstaben aus der Suppe
fischen199
Textmuster beschreiben 200
Gebräuchliche Zeichenklassen204
Gebräuchliche Methoden 206
Vorne suchen - rematch207
Auch weiter hinten suchen - research 208
Alle Vorkommen ausfindig machen - refindall 208
Vorkommen mit Metadaten - refinditer 208
Vorkommen ersetzen mit resub 209
Strings zerteilen mit resplit 209
Beispiel: Nach Vereinbarung 209
Reguläre Ausdrücke in der Praxis 217
Fallstrick: Gierige Ausdrücke 219
Nützliche Rezepte 220
Einen Text nach Zahlen durchsuchen 220
Überflüssige Leerzeichen in einem Text zusammenfalten 220
Alle Schreibweisen von 'Mayer' finden 221
Einen Text in Wörter zerlegen 221
Auskommentierte Zeilen in einem Python-Programm ausgeben 221
HTML-Farbcodes in einer css-Datei finden 221
16 Inhaltsverzeichnis
Kapitel 14
Surfen im Dateisystem 223
Die Qual der Wahl 223
Das aktuelle Verzeichnis herausfinden 224
Die aktuelle Programmdatei finden 225
Verzeichnisse normalisieren 226
Pfade verbinden und lösen 226
Verzeichnis oder Datei?227
Dateien in einem Verzeichnis auflisten 228
Dateien verschieben und kopieren 230
Kapitel 15
Für Ihre Unterlagen - Dateien lesen und schreiben 231
Textdateien 231
Buchstabenweise lesen 233
Zeilenweise lesen234
Dateien schließen235
Dateimodi 237
Lesen und Schreiben gleichzeitig 239
Binärdateien 242
Bytes-Objekte 243
Byte-Blöcke lesen244
Bytes interpretieren (als PNG) 246
Kapitel 16
Bl\xc3\xb6des Encoding 251
Am Anfang war das ASCII 252
Codepages253
Mit Unicode gegen den Zeichensalat255
UTF-8 257
Unicode-Support in Python 259
Wie encode ich richtig?260
TEIL IV
Objekte und Funktionen263
Kapitel 17
Wie Funktionen funktionieren 265
Built-in Functions 265
Eigene Funktionen 266
Funktionen definieren 267
Im Rumpf 268
Funktionen aufrufen 269
Funktionsobjekte 270
Argumente übergeben 270
Rückgabewerte 272
Namensräume 273
Sichtbarkeit (Scope) von Variablen 275
Inhaltsverzeichnis 17
Jede für sich 277
Parameter279
Argumente prüfen 280
Typ-Fehler vermeiden 282
Optionale Parameter - Default-Argumente 282
Parameterreihenfolge 285
Positionale Übergabe erzwingen 286
Flexible Parameter 28 9
Auspacken beim Aufruf 292
Funktionale Programmierung294
Genau die richtige Menge des Guten296
Funktionen: Keine Bürger zweiter Klasse 297
Funktionen, die Funktionen annehmen 298
Lambdas: Funktionen ohne Namen 300
Funktionen, die Funktionen zurückgeben 303
Rekursion: Funktionen, die sich selbst aufrufen 304
Dekoratoren 306
Kapitel 18
Die Welt verstehen mit Objekten 313
Objektorientierte Programmierung 315
Was sind Objekte?316
Wo kommen die Objekte her? 316
Wo gehen Objekte hin? 318
Was können Objekte so?318
Welche Vorteile haben Objekte? 320
Und die Nachteile? 320
Zusammenfassung 321
Eine Klasse für sich 321
Konstruktoraufruf322
Attribute anlegen 323
Die Ausgabe steuern 324
Auch nur mit Wasser gekocht 325
Vererbung 326
Gleich und Selb 327
Vergleiche 328
Arithmetik 329
Eigene Methoden330
Zusammenfassung 332
Vererbung333
Elternklasse 335
Erben337
Späte Bindung 338
Mixins - misch dich ruhig ein 341
Diskussion 347
18 Inhaltsverzeichnis
Kapitel 19
Exceptions - ausnahmsweise keine Katastrophe349
Exceptions behandeln 352
Try - Versuch macht kluch353
Except - Ausnahmen bestätigen die Regel 353
Else und Finally - zu guter Letzt, zu schlechter Letzt355
Ausnahmen auslösen 355
Eigene Ausnahmen definieren356
Kapitel 20
Daten ohne Ende - Iteratoren und Generatoren365
Das Iterator-Protokoll 366
Generatoren 368
Generator-Ausdrücke 369
Eifrige und verzögerte Auswertung 370
Generator-Funktionen 371
Verschachtelte Generatoren 372
Unendliche Generatoren372
Itertools 374
Generator-Objekte 375
Kapitel 21
Code strukturieren mit Modulen und Paketen 377
Module und Pakete 377
Die Standardbibliothek378
Module importieren 379
Module inspizieren 380
Namensräume 381
Direktimporte 382
Namenskonflikte vermeiden 382
Wie der Interpreter Module sucht 383
Pakete - Code von anderen 384
Wie Sie an Pakete kommen 385
Leser installiert pip 387
Pip installiert Pakete 388
Pip installiert Abhängigkeiten 391
Wo landen die Pakete? 392
Versionen 393
Pakete updaten 394
Spezifische Versionen installieren 395
Virtuelle Umgebungen - Paketkonflikte vermeiden durch venv 395
Versionen einfrieren ... 399
...und wieder auftauen 400
Module und Pakete aus eigener Züchtung401
Ausführbare Module importieren 402
Python-Code in einem Verzeichnis 404
Packungsbeilagen für den Versand 406
Inhaltsverzeichnis 19
TEIL V
Weniger kaputte Software 411
Kapitel 22
Stilfrage - was lesbaren Code ausmacht 413
Ein Befehl pro Zeile 414
Zeilenlänge unter 80 Zeichen 414
Hören Sie auf lange Zeilen! 416
Imports gehören nach oben 418
Leerzeichen vereinzeln418
Schleppkommata zum Zeilenschubsen 419
Unwirkliche Vergleiche mit Booleans419
Kapitel 23
Schleifen, trimmen, jäten421
Formatierer - den Code geraderücken 421
Linting - die Fusselbürste für Ihren Code 423
Sicherheitsprobleme vermeiden mit Bandit 428
Kapitel 24
Testen, Testen, Testen 431
Was ist ein Test?431
Intuitives Testen - jeder ist ein Tester432
doctest - Tests als Dokumentation 434
Das System under Test - die Wurst, um die es geht435
Ein erster Test 436
Doctest ausführen 437
Weitere Tests hinzufügen 438
Mit Tests gegen den Fehlerteufel 440
Ausnahmen testen 445
Testgetriebene Entwicklung 447
Schreiben Sie einen Test448
Rot - ein fehlgeschlagener Test448
Grün - ein erfolgreicher Test 449
Refactoring - notwendige Aufräumarbeiten449
unittest - wenn es mal komplexer wird 451
Die Anatomie eines Unit-Tests452
Assertions - große Erwartungen 454
unittest ausführen 455
Eine Funktion testgetrieben entwickeln 457
Refactoring - jetzt mit Sicherung 464
Fortgeschrittene Themen 467
Doppelgänger - Mocks und Stubs 468
Setup und Teardown 473
Kapitel 25
Typing - dem Interpreter Ratschläge geben475
Typ-Prüfung für Variablen 477
für Sammlungen 479
20 Inhaltsverzeichnis
für Funktionen 481
für generische Funktionen 482
für generische Listen483
für bestimmte Protokolle 484
für Datenklassen 486
TEIL VI
Wartezeiten vermeiden 489
Kapitel 26
Arbeitsteilung - wie ein Computer zwei Dinge gleichzeitig
erledigt 491
Multitasking - geteilte Aufmerksamkeit 492
Parallelisierung - geteiltes Leid 493
Zusammenfassung 494
Kapitel 27
Threads - nicht den Faden verlieren 495
Der rote Faden 495
Wofür Threads gut sind497
Wofür Threads nicht gut sind 498
Threads einfädeln 499
Locks - einer nach dem anderen 501
Teuflische Hintergrund-Threads 504
Kapitel 28
Multiprocessing - Arbeit auf mehrere Prozesse verteilen511
Nebenläufigkeit - ein Experiment 511
Aufgaben im Pool ausführen 516
Kapitel 29
Async - wenn Sie nicht auf IO warten möchten 519
TEIL VII
Netzwerkprogrammierung 523
Kapitel 30
Wie Netzwerke aufgebaut sind 525
Wie werden Daten übertragen? 526
Protokolle - Regeln zur Verständigung 527
Ein vereinfachtes Schichtenmodell 528
Die Anwendungsschicht 528
Die Transportschicht 529
Die Vermittlungsschicht 529
Die Übertragungsschicht529
Von oben nach unten 529
Gebräuchliche Protokolle 530
Die Transportschicht unter der Lupe531
UDP - schnell, aber unzuverlässig 531
Inhaltsverzeichnis 21
TCP - zuverlässig, aber langsam532
UDP oder TCP? 532
Header-Daten 533
Die Port-Nummer 534
IP-Adressen 535
Die eigene IP-Adresse herausfinden537
Kapitel 31
UDP - wenn's schnell gehen soll 539
Katz und Maus - Server und Client 539
Vorbereitung 540
Server - alles für die Katz 541
Client - hier kommt die Maus 543
Die Maus auf die Katze loslassen 545
'Richtige' IP-Adressen 546
Kapitel 32
TCP - wenn es ankommen muss 549
Verbindungsaufbau 549
Datenaustausch552
Daten empfangen553
Nachrichten 554
Over & Out555
Beispiel: Ein Briefkasten für genau eine Postkarte557
Ein einfaches Protokoll 557
Ausbaustufe 1 - ein Grundgerüst für Client und Server 559
Ausbaustufe 2 - ein erster Austausch561
Ausbaustufe 3 - Nachrichten lesen und schreiben 562
Ausbaustufe 4 - diskrete Typen566
Ausbaustufe 5 - Nachrichten speichern und abholen 568
Ausbaustufe 6 - Verbesserungen 571
Fehlerbehandlung - jeder macht mal Fehler 571
Nachrichten empfangen - aber echt jetzt! 574
Den Server laufen lassen575
Ausblick 575
Non-Blocking IO 575
Sicherheit 576
Weitere Features 580
TEIL VIII
Python im World Wide Web 583
Kapitel 33
Wie das World Wide Web aufgebaut ist585
Hypertext - verknüpfte Texte 585
Das WWW586
Die Einzelteile im Überblick 586
Webseiten und Ressourcen 587
Browser 587
Webserver 588
22 Inhaltsverzeichnis
Die Anatomie einer Webseite 588
HTML - das Grundgerüst588
Tags - Bausteine der Websprache 590
CSS - Webseiten mit Stil 592
JavaScript - wenn es zappeln soll 593
Seiten mit dem eingebauten Webserver ausliefern 594
Webanwendungen - mehr als nur eine Seite 596
Das Hypertext-Transfer-Protokoll 596
HTTP-Anfragen 597
HTTP-Methoden und -Ressourcen 597
Content-Negotiation - Inhalte aushandeln 598
HTTP-Antworten 599
Wichtige Status-Codes 599
Wichtige Header 600
Kapitel 34
Im Web surfen 603
Hausmittelchen: Webseiten öffnen mit der urllib 603
Requests: HTTP für Menschen604
Im Essen stochern mit Beautiful Soup 605
Scrapy - Daten im Spinnennetz 608
Die HTML-Struktur 610
Auswahlverfahren: CSS-Selektoren 611
Ein erstes Krabbeltier 613
Unterseiten aufrufen 614
Datensätze ausgeben 615
Kapitel 35
Profi-Webseiten mit Django 619
Was ist Django? 620
Datenbanken 621
Eine Vereinsseite623
Installieren623
Ein Projekt anlegen 624
Den Webserver starten 626
Eine App anlegen 627
Ihre Startseite 629
Das Schablonen-System 633
Ein Menü einfügen 635
CSS-Dateien einbinden 637
Platzhalter ausstanzen 640
Unterseiten einfügen 643
Daten modellieren 646
Wozu dienen die Modelle? 647
Der Ablauf beim Modellieren 647
Model-Planning 648
Modell erstellen 649
Migrationen generieren 651
Inhaltsverzeichnis 23
Zustand der Datenbank überprüfen 651
Migrationen erzeugen 653
Migration anwenden 653
Model ausprobieren 654
Das Modell aktualisieren655
Rasenmäher-Übersichtsseiten657
Detailseiten für Rasenmäher 661
Detailseiten verlinken 663
Im Lieferumfang: Das Admin-Backend 664
Zusammenfassung 670
TEIL IX
Der Python im Daten-Dschungel 673
Kapitel 36
Interaktive Notebooks 675
Projekt Jupyter 675
Die Notebook-Umgebung installieren 676
Erste Schritte im Notebook 677
Tastenkürzel - Finger weg von der Maus 678
Code und Dokumentation 679
Magische Zellen 681
Hilfe, ich habe mich verlaufen!681
Interaktive Zellen 683
Kapitel 37
Daten jonglieren mit Pandas 689
Datensätze laden 689
Zeilen ausgeben690
Spalten anzeigen692
Series-Objekte: Schön der Reihe nach 693
Deskriptive Statistiken generieren 695
Zeilen aus Series und DataFrames abfragen 696
Interaktiv filtern 698
Daten gruppieren 700
Fehlende Daten entfernen 704
Resampling - Zeitreihen untersuchen 706
Kapitel 38
Linien, Balken, Torten - Daten visualisieren mit
Matplotlib 711
Matplotlib - wie die Axes im Walde 711
Interaktive Plots 714
Eine kleine Diagramm-Galerie717
Torten- und Balkendiagramme718
Heatmaps 721
Boxplots 723
Streudiagramme 725
Histogramme 727
Ausblick: Schnellere und schönere Diagramme 729
24 Inhaltsverzeichnis
TEIL X
GUI-Programmierung 731
Kapitel 39
Ansichtssache - Programme mit GUI 733
Alternativen - was gibt es sonst so?733
Vorteile 734
Nachteile 735
Herausforderungen 738
Kapitel 40
GUIs mit tkinter 739
Sprechen Sie GUI? 740
Der Entwurf einer GUI-Anwendung 741
Die Problemstellung umreißen742
Eine Skizze des Ablaufs 743
Eine Skizze der GUI 744
Umsetzung746
Ein Fenster erzeugen 746
Widgets hinzufügen 748
Widgets arrangieren 750
Das Layout auflockern 752
Eine Datei öffnen 752
Eine Aktion per Mausklick auslösen 753
Einen Datei-Dialog öffnen754
Die gewählte Datei anzeigen 755
Die Datei hashen 759
Verfügbare Algorithmen anzeigen 759
Einen Algorithmus auswählen 760
Den Hash-Wert berechnen 763
Den Hash-Wert anzeigen764
Fehlerbehandlung765
In die Zwischenablage kopieren768
Statusanzeige updaten 769
Große Dateien hashen 770
Den Fortschrittsbalken aktualisieren 771
Häppchenweise hashen 771
Fortschritt herauslesen 773
Hintergrund-Thread 775
Abschließende Feinarbeiten - der letzte Schliff 777
Gutes Aussehen? Kein Thema!778
Aufgelöst - den Tränen nah 781
Die Skalierung anpassen783
GUI ohne Konsolenfenster starten 785
Windows 785
macOS 785
Linux 785
Inhaltsverzeichnis 25
TEIL XI
Der Top-Ten-Teil 789
Kapitel 41
Dos and Don'ts 791
Zehn Dinge, die Sie tun sollten791
Zehn Dinge, die Sie unterlassen sollten 792
Kapitel 42
Zehn elegante Einzeiler 793
Zwei Variablen vertauschen 793
Negativ Runden 793
Aus einer Liste einen String machen793
Eine verschachtelte Liste plätten 794
Doppelte Elemente entfernen794
Eine Liste paarweise durchlaufen 794
Vier Items gleichzeitig iterieren 794
Zwei Listen zu einem Dictionary kombinieren 795
Eine Matrix transponieren 795
Eine geheime Nachricht dekodieren796
Stichwortverzeichnis 797
Über den Autor 27
Danksagung 29
Einleitung 31
Törichte Annahmen über die Leser 31
Wie Sie dieses Buch nutzen können 32
Was Sie nicht lesen müssen 32
Wie dieses Buch aufgebaut ist 32
Symbole, die in diesem Buch verwendet werden 34
Konventionen in diesem Buch 35
TEIL I
Willkommen in Python-City 37
Kapitel 1
Python - eine Hochglanzbroschüre 39
Was Python so interessant macht 40
Dunkle Flecken - was an Python manchmal nicht so schön ist 41
Infrastruktur und Dienstleistungen 42
Haushalt und Wirtschaft 43
Politische Entscheidungsprozesse 44
Philosophie 44
Willkommen 45
Kapitel 2
Der Einzug in die neue Wohnung 47
Was wird installiert? 47
Windows 48
1 Installer herunterladen 48
2 Features auswählen 49
3 Anpassungen vornehmen 50
4 Installieren 50
5 Installation prüfen 51
macOS 52
1 Installer herunterladen 52
2 Installer ausführen 52
3 Ziel auswählen 52
4 Installation anpassen 52
4 Abwarten und Tee trinken 53
5 Installation testen 53
12 Inhaltsverzeichnis
Linux 54
Ubuntu 54
Fedora 55
Einer für alle 56
Windows 56
Linux56
macOS 57
Kapitel 3
Die Nachbarschaft kennenlernen 59
Die Kommandozeile starten 59
Windows 60
macOS 60
Linux60
Auf der Kommandozeile 61
Wo bin ich?62
Befehle für die Kommandozeile 63
Code ausprobieren 65
Die Wahl des Editors 66
Programme ausführen 67
Kapitel 4
Exposition auf dem Stadtfest - ein erster Blick in den Code 69
Ausführung 71
Vogelperspektive 72
Ein Docstring 74
Eine Zahl ausdenken 75
Eine erste Runde drehen 75
Raten 76
Hast du einen Tipp? 79
Weiter geht's! 80
Kapitel 5
Syntax - die lokale Mundart 81
Verschiedene Ausdrucksformen 81
Zeilen 82
Schlüsselwörter, Anweisungen und Ausdrücke 84
Zusammengesetzte Anweisungen 86
Einrückung 87
Variablen 89
Namensfindung 90
Literale 91
Objekte 93
Inhaltsverzeichnis 13
TEIL II
Alles unter Kontrolle 95
Kapitel 6
Mit Wenn und Aber - Bedingungen stellen 97
Verzweigungen im Programmablauf97
If-Anweisungen 98
If-Ausdrücke100
Musterabgleiche101
Kapitel 7
Anweisungen wiederholen mit Schleifen 105
Wiederholungen mit while 105
Break and Continue 107
For-Schleifen 109
Kapitel 8
Der eingebaute Taschenrechner - ein bisschen Mathe 113
Zahlen 113
Exkurs: Zahlensysteme114
Binärzahlen 115
Hexadezimalzahlen 116
Konvertieren 117
Große Zahlen 117
Kommazahlen 118
Festkommazahlen 119
Brüche 120
Rechnen 120
Operatorrangfolge 123
Funktionen für mathematische Probleme 123
Kapitel 9
Wahrheit oder Pflicht - logische Ausdrücke formulieren 125
Wahrheitswerte 125
Truthy-Falsy 126
Vergleichsoperatoren 128
Verneinung 129
Logische Operatoren 130
AND - logisches Und 130
OR - logisches Oder 131
XOR - logisches Entweder-Oder132
Logische Gesetze 134
Distributivgesetz 135
De-Morgansche Gesetze137
Tipps139
14 Inhaltsverzeichnis
Kapitel 10
Verpackungstechnik - eingebaute Container-Datentypen 141
Listen 141
Listen aufbauen und bearbeiten 142
Metadaten abfragen 144
Sortieren 146
Einzelne Elemente abfragen 146
Listen zerschnippeln - Slicing 147
Tupel 149
Einpacken - Auspacken 151
Benannte Tupel 153
Dictionarys154
Dictionarys iterieren 155
Schlüsseldienst 156
Sets157
Einmalige Elemente 157
Teilmengen159
Schnittmenge 160
Vereinigungsmenge 161
Differenzmenge 163
Symmetrische Differenz 163
Zusammenfassung 164
Weitere Datentypen 164
Frozensets 165
Bytes und Byte-Array 165
Arrays, Structs165
und viele andere mehr166
Kapitel 11
Comprehensions - selbstverständliche Listen 167
List-Comprehensions 168
Iteration 169
Projektion 169
Selektion 170
Set-Comprehensions 171
Dict-Comprehensions 171
Generatoren statt Tupel-Comprehensions 172
Beispiel: Ein Balkendiagramm173
Schleife oder Comprehension?176
Sonderfälle177
"ftoc-new_PrintPDF" - 2025/4/23 - 1:53 - page 15 - #5
Inhaltsverzeichnis 15
TEIL III
Buchstabensuppe 179
Kapitel 12
Strings - Python als Schreibmaschine 181
Auf einen Blick 182
Syntax 183
String-Objekte 183
Mehrzeilige Strings 183
Gemischte Anführungszeichen184
Ausbruch mit Escape-Zeichen 185
Texte einlesen 185
Texte ausgeben 186
Steuerzeichen 188
str - Objekte in Strings konvertieren190
Variablen im Text formatieren190
Interpolation mit f-Strings 191
Früher war %(alle)s anders 192
Explizites Formatieren 193
Minisprache zur Formatierung193
Zahlen anders darstellen193
Zahlen runden 194
Werte ausrichten und auffüllen 194
Datumsangaben formatieren 195
Wichtige Methoden 196
Kapitel 13
Mit regulären Ausdrücken Buchstaben aus der Suppe
fischen199
Textmuster beschreiben 200
Gebräuchliche Zeichenklassen204
Gebräuchliche Methoden 206
Vorne suchen - rematch207
Auch weiter hinten suchen - research 208
Alle Vorkommen ausfindig machen - refindall 208
Vorkommen mit Metadaten - refinditer 208
Vorkommen ersetzen mit resub 209
Strings zerteilen mit resplit 209
Beispiel: Nach Vereinbarung 209
Reguläre Ausdrücke in der Praxis 217
Fallstrick: Gierige Ausdrücke 219
Nützliche Rezepte 220
Einen Text nach Zahlen durchsuchen 220
Überflüssige Leerzeichen in einem Text zusammenfalten 220
Alle Schreibweisen von 'Mayer' finden 221
Einen Text in Wörter zerlegen 221
Auskommentierte Zeilen in einem Python-Programm ausgeben 221
HTML-Farbcodes in einer css-Datei finden 221
16 Inhaltsverzeichnis
Kapitel 14
Surfen im Dateisystem 223
Die Qual der Wahl 223
Das aktuelle Verzeichnis herausfinden 224
Die aktuelle Programmdatei finden 225
Verzeichnisse normalisieren 226
Pfade verbinden und lösen 226
Verzeichnis oder Datei?227
Dateien in einem Verzeichnis auflisten 228
Dateien verschieben und kopieren 230
Kapitel 15
Für Ihre Unterlagen - Dateien lesen und schreiben 231
Textdateien 231
Buchstabenweise lesen 233
Zeilenweise lesen234
Dateien schließen235
Dateimodi 237
Lesen und Schreiben gleichzeitig 239
Binärdateien 242
Bytes-Objekte 243
Byte-Blöcke lesen244
Bytes interpretieren (als PNG) 246
Kapitel 16
Bl\xc3\xb6des Encoding 251
Am Anfang war das ASCII 252
Codepages253
Mit Unicode gegen den Zeichensalat255
UTF-8 257
Unicode-Support in Python 259
Wie encode ich richtig?260
TEIL IV
Objekte und Funktionen263
Kapitel 17
Wie Funktionen funktionieren 265
Built-in Functions 265
Eigene Funktionen 266
Funktionen definieren 267
Im Rumpf 268
Funktionen aufrufen 269
Funktionsobjekte 270
Argumente übergeben 270
Rückgabewerte 272
Namensräume 273
Sichtbarkeit (Scope) von Variablen 275
Inhaltsverzeichnis 17
Jede für sich 277
Parameter279
Argumente prüfen 280
Typ-Fehler vermeiden 282
Optionale Parameter - Default-Argumente 282
Parameterreihenfolge 285
Positionale Übergabe erzwingen 286
Flexible Parameter 28 9
Auspacken beim Aufruf 292
Funktionale Programmierung294
Genau die richtige Menge des Guten296
Funktionen: Keine Bürger zweiter Klasse 297
Funktionen, die Funktionen annehmen 298
Lambdas: Funktionen ohne Namen 300
Funktionen, die Funktionen zurückgeben 303
Rekursion: Funktionen, die sich selbst aufrufen 304
Dekoratoren 306
Kapitel 18
Die Welt verstehen mit Objekten 313
Objektorientierte Programmierung 315
Was sind Objekte?316
Wo kommen die Objekte her? 316
Wo gehen Objekte hin? 318
Was können Objekte so?318
Welche Vorteile haben Objekte? 320
Und die Nachteile? 320
Zusammenfassung 321
Eine Klasse für sich 321
Konstruktoraufruf322
Attribute anlegen 323
Die Ausgabe steuern 324
Auch nur mit Wasser gekocht 325
Vererbung 326
Gleich und Selb 327
Vergleiche 328
Arithmetik 329
Eigene Methoden330
Zusammenfassung 332
Vererbung333
Elternklasse 335
Erben337
Späte Bindung 338
Mixins - misch dich ruhig ein 341
Diskussion 347
18 Inhaltsverzeichnis
Kapitel 19
Exceptions - ausnahmsweise keine Katastrophe349
Exceptions behandeln 352
Try - Versuch macht kluch353
Except - Ausnahmen bestätigen die Regel 353
Else und Finally - zu guter Letzt, zu schlechter Letzt355
Ausnahmen auslösen 355
Eigene Ausnahmen definieren356
Kapitel 20
Daten ohne Ende - Iteratoren und Generatoren365
Das Iterator-Protokoll 366
Generatoren 368
Generator-Ausdrücke 369
Eifrige und verzögerte Auswertung 370
Generator-Funktionen 371
Verschachtelte Generatoren 372
Unendliche Generatoren372
Itertools 374
Generator-Objekte 375
Kapitel 21
Code strukturieren mit Modulen und Paketen 377
Module und Pakete 377
Die Standardbibliothek378
Module importieren 379
Module inspizieren 380
Namensräume 381
Direktimporte 382
Namenskonflikte vermeiden 382
Wie der Interpreter Module sucht 383
Pakete - Code von anderen 384
Wie Sie an Pakete kommen 385
Leser installiert pip 387
Pip installiert Pakete 388
Pip installiert Abhängigkeiten 391
Wo landen die Pakete? 392
Versionen 393
Pakete updaten 394
Spezifische Versionen installieren 395
Virtuelle Umgebungen - Paketkonflikte vermeiden durch venv 395
Versionen einfrieren ... 399
...und wieder auftauen 400
Module und Pakete aus eigener Züchtung401
Ausführbare Module importieren 402
Python-Code in einem Verzeichnis 404
Packungsbeilagen für den Versand 406
Inhaltsverzeichnis 19
TEIL V
Weniger kaputte Software 411
Kapitel 22
Stilfrage - was lesbaren Code ausmacht 413
Ein Befehl pro Zeile 414
Zeilenlänge unter 80 Zeichen 414
Hören Sie auf lange Zeilen! 416
Imports gehören nach oben 418
Leerzeichen vereinzeln418
Schleppkommata zum Zeilenschubsen 419
Unwirkliche Vergleiche mit Booleans419
Kapitel 23
Schleifen, trimmen, jäten421
Formatierer - den Code geraderücken 421
Linting - die Fusselbürste für Ihren Code 423
Sicherheitsprobleme vermeiden mit Bandit 428
Kapitel 24
Testen, Testen, Testen 431
Was ist ein Test?431
Intuitives Testen - jeder ist ein Tester432
doctest - Tests als Dokumentation 434
Das System under Test - die Wurst, um die es geht435
Ein erster Test 436
Doctest ausführen 437
Weitere Tests hinzufügen 438
Mit Tests gegen den Fehlerteufel 440
Ausnahmen testen 445
Testgetriebene Entwicklung 447
Schreiben Sie einen Test448
Rot - ein fehlgeschlagener Test448
Grün - ein erfolgreicher Test 449
Refactoring - notwendige Aufräumarbeiten449
unittest - wenn es mal komplexer wird 451
Die Anatomie eines Unit-Tests452
Assertions - große Erwartungen 454
unittest ausführen 455
Eine Funktion testgetrieben entwickeln 457
Refactoring - jetzt mit Sicherung 464
Fortgeschrittene Themen 467
Doppelgänger - Mocks und Stubs 468
Setup und Teardown 473
Kapitel 25
Typing - dem Interpreter Ratschläge geben475
Typ-Prüfung für Variablen 477
für Sammlungen 479
20 Inhaltsverzeichnis
für Funktionen 481
für generische Funktionen 482
für generische Listen483
für bestimmte Protokolle 484
für Datenklassen 486
TEIL VI
Wartezeiten vermeiden 489
Kapitel 26
Arbeitsteilung - wie ein Computer zwei Dinge gleichzeitig
erledigt 491
Multitasking - geteilte Aufmerksamkeit 492
Parallelisierung - geteiltes Leid 493
Zusammenfassung 494
Kapitel 27
Threads - nicht den Faden verlieren 495
Der rote Faden 495
Wofür Threads gut sind497
Wofür Threads nicht gut sind 498
Threads einfädeln 499
Locks - einer nach dem anderen 501
Teuflische Hintergrund-Threads 504
Kapitel 28
Multiprocessing - Arbeit auf mehrere Prozesse verteilen511
Nebenläufigkeit - ein Experiment 511
Aufgaben im Pool ausführen 516
Kapitel 29
Async - wenn Sie nicht auf IO warten möchten 519
TEIL VII
Netzwerkprogrammierung 523
Kapitel 30
Wie Netzwerke aufgebaut sind 525
Wie werden Daten übertragen? 526
Protokolle - Regeln zur Verständigung 527
Ein vereinfachtes Schichtenmodell 528
Die Anwendungsschicht 528
Die Transportschicht 529
Die Vermittlungsschicht 529
Die Übertragungsschicht529
Von oben nach unten 529
Gebräuchliche Protokolle 530
Die Transportschicht unter der Lupe531
UDP - schnell, aber unzuverlässig 531
Inhaltsverzeichnis 21
TCP - zuverlässig, aber langsam532
UDP oder TCP? 532
Header-Daten 533
Die Port-Nummer 534
IP-Adressen 535
Die eigene IP-Adresse herausfinden537
Kapitel 31
UDP - wenn's schnell gehen soll 539
Katz und Maus - Server und Client 539
Vorbereitung 540
Server - alles für die Katz 541
Client - hier kommt die Maus 543
Die Maus auf die Katze loslassen 545
'Richtige' IP-Adressen 546
Kapitel 32
TCP - wenn es ankommen muss 549
Verbindungsaufbau 549
Datenaustausch552
Daten empfangen553
Nachrichten 554
Over & Out555
Beispiel: Ein Briefkasten für genau eine Postkarte557
Ein einfaches Protokoll 557
Ausbaustufe 1 - ein Grundgerüst für Client und Server 559
Ausbaustufe 2 - ein erster Austausch561
Ausbaustufe 3 - Nachrichten lesen und schreiben 562
Ausbaustufe 4 - diskrete Typen566
Ausbaustufe 5 - Nachrichten speichern und abholen 568
Ausbaustufe 6 - Verbesserungen 571
Fehlerbehandlung - jeder macht mal Fehler 571
Nachrichten empfangen - aber echt jetzt! 574
Den Server laufen lassen575
Ausblick 575
Non-Blocking IO 575
Sicherheit 576
Weitere Features 580
TEIL VIII
Python im World Wide Web 583
Kapitel 33
Wie das World Wide Web aufgebaut ist585
Hypertext - verknüpfte Texte 585
Das WWW586
Die Einzelteile im Überblick 586
Webseiten und Ressourcen 587
Browser 587
Webserver 588
22 Inhaltsverzeichnis
Die Anatomie einer Webseite 588
HTML - das Grundgerüst588
Tags - Bausteine der Websprache 590
CSS - Webseiten mit Stil 592
JavaScript - wenn es zappeln soll 593
Seiten mit dem eingebauten Webserver ausliefern 594
Webanwendungen - mehr als nur eine Seite 596
Das Hypertext-Transfer-Protokoll 596
HTTP-Anfragen 597
HTTP-Methoden und -Ressourcen 597
Content-Negotiation - Inhalte aushandeln 598
HTTP-Antworten 599
Wichtige Status-Codes 599
Wichtige Header 600
Kapitel 34
Im Web surfen 603
Hausmittelchen: Webseiten öffnen mit der urllib 603
Requests: HTTP für Menschen604
Im Essen stochern mit Beautiful Soup 605
Scrapy - Daten im Spinnennetz 608
Die HTML-Struktur 610
Auswahlverfahren: CSS-Selektoren 611
Ein erstes Krabbeltier 613
Unterseiten aufrufen 614
Datensätze ausgeben 615
Kapitel 35
Profi-Webseiten mit Django 619
Was ist Django? 620
Datenbanken 621
Eine Vereinsseite623
Installieren623
Ein Projekt anlegen 624
Den Webserver starten 626
Eine App anlegen 627
Ihre Startseite 629
Das Schablonen-System 633
Ein Menü einfügen 635
CSS-Dateien einbinden 637
Platzhalter ausstanzen 640
Unterseiten einfügen 643
Daten modellieren 646
Wozu dienen die Modelle? 647
Der Ablauf beim Modellieren 647
Model-Planning 648
Modell erstellen 649
Migrationen generieren 651
Inhaltsverzeichnis 23
Zustand der Datenbank überprüfen 651
Migrationen erzeugen 653
Migration anwenden 653
Model ausprobieren 654
Das Modell aktualisieren655
Rasenmäher-Übersichtsseiten657
Detailseiten für Rasenmäher 661
Detailseiten verlinken 663
Im Lieferumfang: Das Admin-Backend 664
Zusammenfassung 670
TEIL IX
Der Python im Daten-Dschungel 673
Kapitel 36
Interaktive Notebooks 675
Projekt Jupyter 675
Die Notebook-Umgebung installieren 676
Erste Schritte im Notebook 677
Tastenkürzel - Finger weg von der Maus 678
Code und Dokumentation 679
Magische Zellen 681
Hilfe, ich habe mich verlaufen!681
Interaktive Zellen 683
Kapitel 37
Daten jonglieren mit Pandas 689
Datensätze laden 689
Zeilen ausgeben690
Spalten anzeigen692
Series-Objekte: Schön der Reihe nach 693
Deskriptive Statistiken generieren 695
Zeilen aus Series und DataFrames abfragen 696
Interaktiv filtern 698
Daten gruppieren 700
Fehlende Daten entfernen 704
Resampling - Zeitreihen untersuchen 706
Kapitel 38
Linien, Balken, Torten - Daten visualisieren mit
Matplotlib 711
Matplotlib - wie die Axes im Walde 711
Interaktive Plots 714
Eine kleine Diagramm-Galerie717
Torten- und Balkendiagramme718
Heatmaps 721
Boxplots 723
Streudiagramme 725
Histogramme 727
Ausblick: Schnellere und schönere Diagramme 729
24 Inhaltsverzeichnis
TEIL X
GUI-Programmierung 731
Kapitel 39
Ansichtssache - Programme mit GUI 733
Alternativen - was gibt es sonst so?733
Vorteile 734
Nachteile 735
Herausforderungen 738
Kapitel 40
GUIs mit tkinter 739
Sprechen Sie GUI? 740
Der Entwurf einer GUI-Anwendung 741
Die Problemstellung umreißen742
Eine Skizze des Ablaufs 743
Eine Skizze der GUI 744
Umsetzung746
Ein Fenster erzeugen 746
Widgets hinzufügen 748
Widgets arrangieren 750
Das Layout auflockern 752
Eine Datei öffnen 752
Eine Aktion per Mausklick auslösen 753
Einen Datei-Dialog öffnen754
Die gewählte Datei anzeigen 755
Die Datei hashen 759
Verfügbare Algorithmen anzeigen 759
Einen Algorithmus auswählen 760
Den Hash-Wert berechnen 763
Den Hash-Wert anzeigen764
Fehlerbehandlung765
In die Zwischenablage kopieren768
Statusanzeige updaten 769
Große Dateien hashen 770
Den Fortschrittsbalken aktualisieren 771
Häppchenweise hashen 771
Fortschritt herauslesen 773
Hintergrund-Thread 775
Abschließende Feinarbeiten - der letzte Schliff 777
Gutes Aussehen? Kein Thema!778
Aufgelöst - den Tränen nah 781
Die Skalierung anpassen783
GUI ohne Konsolenfenster starten 785
Windows 785
macOS 785
Linux 785
Inhaltsverzeichnis 25
TEIL XI
Der Top-Ten-Teil 789
Kapitel 41
Dos and Don'ts 791
Zehn Dinge, die Sie tun sollten791
Zehn Dinge, die Sie unterlassen sollten 792
Kapitel 42
Zehn elegante Einzeiler 793
Zwei Variablen vertauschen 793
Negativ Runden 793
Aus einer Liste einen String machen793
Eine verschachtelte Liste plätten 794
Doppelte Elemente entfernen794
Eine Liste paarweise durchlaufen 794
Vier Items gleichzeitig iterieren 794
Zwei Listen zu einem Dictionary kombinieren 795
Eine Matrix transponieren 795
Eine geheime Nachricht dekodieren796
Stichwortverzeichnis 797
Inhaltsverzeichnis
Über den Autor 27
Danksagung 29
Einleitung 31
Törichte Annahmen über die Leser 31
Wie Sie dieses Buch nutzen können 32
Was Sie nicht lesen müssen 32
Wie dieses Buch aufgebaut ist 32
Symbole, die in diesem Buch verwendet werden 34
Konventionen in diesem Buch 35
TEIL I
Willkommen in Python-City 37
Kapitel 1
Python - eine Hochglanzbroschüre 39
Was Python so interessant macht 40
Dunkle Flecken - was an Python manchmal nicht so schön ist 41
Infrastruktur und Dienstleistungen 42
Haushalt und Wirtschaft 43
Politische Entscheidungsprozesse 44
Philosophie 44
Willkommen 45
Kapitel 2
Der Einzug in die neue Wohnung 47
Was wird installiert? 47
Windows 48
1 Installer herunterladen 48
2 Features auswählen 49
3 Anpassungen vornehmen 50
4 Installieren 50
5 Installation prüfen 51
macOS 52
1 Installer herunterladen 52
2 Installer ausführen 52
3 Ziel auswählen 52
4 Installation anpassen 52
4 Abwarten und Tee trinken 53
5 Installation testen 53
12 Inhaltsverzeichnis
Linux 54
Ubuntu 54
Fedora 55
Einer für alle 56
Windows 56
Linux56
macOS 57
Kapitel 3
Die Nachbarschaft kennenlernen 59
Die Kommandozeile starten 59
Windows 60
macOS 60
Linux60
Auf der Kommandozeile 61
Wo bin ich?62
Befehle für die Kommandozeile 63
Code ausprobieren 65
Die Wahl des Editors 66
Programme ausführen 67
Kapitel 4
Exposition auf dem Stadtfest - ein erster Blick in den Code 69
Ausführung 71
Vogelperspektive 72
Ein Docstring 74
Eine Zahl ausdenken 75
Eine erste Runde drehen 75
Raten 76
Hast du einen Tipp? 79
Weiter geht's! 80
Kapitel 5
Syntax - die lokale Mundart 81
Verschiedene Ausdrucksformen 81
Zeilen 82
Schlüsselwörter, Anweisungen und Ausdrücke 84
Zusammengesetzte Anweisungen 86
Einrückung 87
Variablen 89
Namensfindung 90
Literale 91
Objekte 93
Inhaltsverzeichnis 13
TEIL II
Alles unter Kontrolle 95
Kapitel 6
Mit Wenn und Aber - Bedingungen stellen 97
Verzweigungen im Programmablauf97
If-Anweisungen 98
If-Ausdrücke100
Musterabgleiche101
Kapitel 7
Anweisungen wiederholen mit Schleifen 105
Wiederholungen mit while 105
Break and Continue 107
For-Schleifen 109
Kapitel 8
Der eingebaute Taschenrechner - ein bisschen Mathe 113
Zahlen 113
Exkurs: Zahlensysteme114
Binärzahlen 115
Hexadezimalzahlen 116
Konvertieren 117
Große Zahlen 117
Kommazahlen 118
Festkommazahlen 119
Brüche 120
Rechnen 120
Operatorrangfolge 123
Funktionen für mathematische Probleme 123
Kapitel 9
Wahrheit oder Pflicht - logische Ausdrücke formulieren 125
Wahrheitswerte 125
Truthy-Falsy 126
Vergleichsoperatoren 128
Verneinung 129
Logische Operatoren 130
AND - logisches Und 130
OR - logisches Oder 131
XOR - logisches Entweder-Oder132
Logische Gesetze 134
Distributivgesetz 135
De-Morgansche Gesetze137
Tipps139
14 Inhaltsverzeichnis
Kapitel 10
Verpackungstechnik - eingebaute Container-Datentypen 141
Listen 141
Listen aufbauen und bearbeiten 142
Metadaten abfragen 144
Sortieren 146
Einzelne Elemente abfragen 146
Listen zerschnippeln - Slicing 147
Tupel 149
Einpacken - Auspacken 151
Benannte Tupel 153
Dictionarys154
Dictionarys iterieren 155
Schlüsseldienst 156
Sets157
Einmalige Elemente 157
Teilmengen159
Schnittmenge 160
Vereinigungsmenge 161
Differenzmenge 163
Symmetrische Differenz 163
Zusammenfassung 164
Weitere Datentypen 164
Frozensets 165
Bytes und Byte-Array 165
Arrays, Structs165
und viele andere mehr166
Kapitel 11
Comprehensions - selbstverständliche Listen 167
List-Comprehensions 168
Iteration 169
Projektion 169
Selektion 170
Set-Comprehensions 171
Dict-Comprehensions 171
Generatoren statt Tupel-Comprehensions 172
Beispiel: Ein Balkendiagramm173
Schleife oder Comprehension?176
Sonderfälle177
"ftoc-new_PrintPDF" - 2025/4/23 - 1:53 - page 15 - #5
Inhaltsverzeichnis 15
TEIL III
Buchstabensuppe 179
Kapitel 12
Strings - Python als Schreibmaschine 181
Auf einen Blick 182
Syntax 183
String-Objekte 183
Mehrzeilige Strings 183
Gemischte Anführungszeichen184
Ausbruch mit Escape-Zeichen 185
Texte einlesen 185
Texte ausgeben 186
Steuerzeichen 188
str - Objekte in Strings konvertieren190
Variablen im Text formatieren190
Interpolation mit f-Strings 191
Früher war %(alle)s anders 192
Explizites Formatieren 193
Minisprache zur Formatierung193
Zahlen anders darstellen193
Zahlen runden 194
Werte ausrichten und auffüllen 194
Datumsangaben formatieren 195
Wichtige Methoden 196
Kapitel 13
Mit regulären Ausdrücken Buchstaben aus der Suppe
fischen199
Textmuster beschreiben 200
Gebräuchliche Zeichenklassen204
Gebräuchliche Methoden 206
Vorne suchen - rematch207
Auch weiter hinten suchen - research 208
Alle Vorkommen ausfindig machen - refindall 208
Vorkommen mit Metadaten - refinditer 208
Vorkommen ersetzen mit resub 209
Strings zerteilen mit resplit 209
Beispiel: Nach Vereinbarung 209
Reguläre Ausdrücke in der Praxis 217
Fallstrick: Gierige Ausdrücke 219
Nützliche Rezepte 220
Einen Text nach Zahlen durchsuchen 220
Überflüssige Leerzeichen in einem Text zusammenfalten 220
Alle Schreibweisen von 'Mayer' finden 221
Einen Text in Wörter zerlegen 221
Auskommentierte Zeilen in einem Python-Programm ausgeben 221
HTML-Farbcodes in einer css-Datei finden 221
16 Inhaltsverzeichnis
Kapitel 14
Surfen im Dateisystem 223
Die Qual der Wahl 223
Das aktuelle Verzeichnis herausfinden 224
Die aktuelle Programmdatei finden 225
Verzeichnisse normalisieren 226
Pfade verbinden und lösen 226
Verzeichnis oder Datei?227
Dateien in einem Verzeichnis auflisten 228
Dateien verschieben und kopieren 230
Kapitel 15
Für Ihre Unterlagen - Dateien lesen und schreiben 231
Textdateien 231
Buchstabenweise lesen 233
Zeilenweise lesen234
Dateien schließen235
Dateimodi 237
Lesen und Schreiben gleichzeitig 239
Binärdateien 242
Bytes-Objekte 243
Byte-Blöcke lesen244
Bytes interpretieren (als PNG) 246
Kapitel 16
Bl\xc3\xb6des Encoding 251
Am Anfang war das ASCII 252
Codepages253
Mit Unicode gegen den Zeichensalat255
UTF-8 257
Unicode-Support in Python 259
Wie encode ich richtig?260
TEIL IV
Objekte und Funktionen263
Kapitel 17
Wie Funktionen funktionieren 265
Built-in Functions 265
Eigene Funktionen 266
Funktionen definieren 267
Im Rumpf 268
Funktionen aufrufen 269
Funktionsobjekte 270
Argumente übergeben 270
Rückgabewerte 272
Namensräume 273
Sichtbarkeit (Scope) von Variablen 275
Inhaltsverzeichnis 17
Jede für sich 277
Parameter279
Argumente prüfen 280
Typ-Fehler vermeiden 282
Optionale Parameter - Default-Argumente 282
Parameterreihenfolge 285
Positionale Übergabe erzwingen 286
Flexible Parameter 28 9
Auspacken beim Aufruf 292
Funktionale Programmierung294
Genau die richtige Menge des Guten296
Funktionen: Keine Bürger zweiter Klasse 297
Funktionen, die Funktionen annehmen 298
Lambdas: Funktionen ohne Namen 300
Funktionen, die Funktionen zurückgeben 303
Rekursion: Funktionen, die sich selbst aufrufen 304
Dekoratoren 306
Kapitel 18
Die Welt verstehen mit Objekten 313
Objektorientierte Programmierung 315
Was sind Objekte?316
Wo kommen die Objekte her? 316
Wo gehen Objekte hin? 318
Was können Objekte so?318
Welche Vorteile haben Objekte? 320
Und die Nachteile? 320
Zusammenfassung 321
Eine Klasse für sich 321
Konstruktoraufruf322
Attribute anlegen 323
Die Ausgabe steuern 324
Auch nur mit Wasser gekocht 325
Vererbung 326
Gleich und Selb 327
Vergleiche 328
Arithmetik 329
Eigene Methoden330
Zusammenfassung 332
Vererbung333
Elternklasse 335
Erben337
Späte Bindung 338
Mixins - misch dich ruhig ein 341
Diskussion 347
18 Inhaltsverzeichnis
Kapitel 19
Exceptions - ausnahmsweise keine Katastrophe349
Exceptions behandeln 352
Try - Versuch macht kluch353
Except - Ausnahmen bestätigen die Regel 353
Else und Finally - zu guter Letzt, zu schlechter Letzt355
Ausnahmen auslösen 355
Eigene Ausnahmen definieren356
Kapitel 20
Daten ohne Ende - Iteratoren und Generatoren365
Das Iterator-Protokoll 366
Generatoren 368
Generator-Ausdrücke 369
Eifrige und verzögerte Auswertung 370
Generator-Funktionen 371
Verschachtelte Generatoren 372
Unendliche Generatoren372
Itertools 374
Generator-Objekte 375
Kapitel 21
Code strukturieren mit Modulen und Paketen 377
Module und Pakete 377
Die Standardbibliothek378
Module importieren 379
Module inspizieren 380
Namensräume 381
Direktimporte 382
Namenskonflikte vermeiden 382
Wie der Interpreter Module sucht 383
Pakete - Code von anderen 384
Wie Sie an Pakete kommen 385
Leser installiert pip 387
Pip installiert Pakete 388
Pip installiert Abhängigkeiten 391
Wo landen die Pakete? 392
Versionen 393
Pakete updaten 394
Spezifische Versionen installieren 395
Virtuelle Umgebungen - Paketkonflikte vermeiden durch venv 395
Versionen einfrieren ... 399
...und wieder auftauen 400
Module und Pakete aus eigener Züchtung401
Ausführbare Module importieren 402
Python-Code in einem Verzeichnis 404
Packungsbeilagen für den Versand 406
Inhaltsverzeichnis 19
TEIL V
Weniger kaputte Software 411
Kapitel 22
Stilfrage - was lesbaren Code ausmacht 413
Ein Befehl pro Zeile 414
Zeilenlänge unter 80 Zeichen 414
Hören Sie auf lange Zeilen! 416
Imports gehören nach oben 418
Leerzeichen vereinzeln418
Schleppkommata zum Zeilenschubsen 419
Unwirkliche Vergleiche mit Booleans419
Kapitel 23
Schleifen, trimmen, jäten421
Formatierer - den Code geraderücken 421
Linting - die Fusselbürste für Ihren Code 423
Sicherheitsprobleme vermeiden mit Bandit 428
Kapitel 24
Testen, Testen, Testen 431
Was ist ein Test?431
Intuitives Testen - jeder ist ein Tester432
doctest - Tests als Dokumentation 434
Das System under Test - die Wurst, um die es geht435
Ein erster Test 436
Doctest ausführen 437
Weitere Tests hinzufügen 438
Mit Tests gegen den Fehlerteufel 440
Ausnahmen testen 445
Testgetriebene Entwicklung 447
Schreiben Sie einen Test448
Rot - ein fehlgeschlagener Test448
Grün - ein erfolgreicher Test 449
Refactoring - notwendige Aufräumarbeiten449
unittest - wenn es mal komplexer wird 451
Die Anatomie eines Unit-Tests452
Assertions - große Erwartungen 454
unittest ausführen 455
Eine Funktion testgetrieben entwickeln 457
Refactoring - jetzt mit Sicherung 464
Fortgeschrittene Themen 467
Doppelgänger - Mocks und Stubs 468
Setup und Teardown 473
Kapitel 25
Typing - dem Interpreter Ratschläge geben475
Typ-Prüfung für Variablen 477
für Sammlungen 479
20 Inhaltsverzeichnis
für Funktionen 481
für generische Funktionen 482
für generische Listen483
für bestimmte Protokolle 484
für Datenklassen 486
TEIL VI
Wartezeiten vermeiden 489
Kapitel 26
Arbeitsteilung - wie ein Computer zwei Dinge gleichzeitig
erledigt 491
Multitasking - geteilte Aufmerksamkeit 492
Parallelisierung - geteiltes Leid 493
Zusammenfassung 494
Kapitel 27
Threads - nicht den Faden verlieren 495
Der rote Faden 495
Wofür Threads gut sind497
Wofür Threads nicht gut sind 498
Threads einfädeln 499
Locks - einer nach dem anderen 501
Teuflische Hintergrund-Threads 504
Kapitel 28
Multiprocessing - Arbeit auf mehrere Prozesse verteilen511
Nebenläufigkeit - ein Experiment 511
Aufgaben im Pool ausführen 516
Kapitel 29
Async - wenn Sie nicht auf IO warten möchten 519
TEIL VII
Netzwerkprogrammierung 523
Kapitel 30
Wie Netzwerke aufgebaut sind 525
Wie werden Daten übertragen? 526
Protokolle - Regeln zur Verständigung 527
Ein vereinfachtes Schichtenmodell 528
Die Anwendungsschicht 528
Die Transportschicht 529
Die Vermittlungsschicht 529
Die Übertragungsschicht529
Von oben nach unten 529
Gebräuchliche Protokolle 530
Die Transportschicht unter der Lupe531
UDP - schnell, aber unzuverlässig 531
Inhaltsverzeichnis 21
TCP - zuverlässig, aber langsam532
UDP oder TCP? 532
Header-Daten 533
Die Port-Nummer 534
IP-Adressen 535
Die eigene IP-Adresse herausfinden537
Kapitel 31
UDP - wenn's schnell gehen soll 539
Katz und Maus - Server und Client 539
Vorbereitung 540
Server - alles für die Katz 541
Client - hier kommt die Maus 543
Die Maus auf die Katze loslassen 545
'Richtige' IP-Adressen 546
Kapitel 32
TCP - wenn es ankommen muss 549
Verbindungsaufbau 549
Datenaustausch552
Daten empfangen553
Nachrichten 554
Over & Out555
Beispiel: Ein Briefkasten für genau eine Postkarte557
Ein einfaches Protokoll 557
Ausbaustufe 1 - ein Grundgerüst für Client und Server 559
Ausbaustufe 2 - ein erster Austausch561
Ausbaustufe 3 - Nachrichten lesen und schreiben 562
Ausbaustufe 4 - diskrete Typen566
Ausbaustufe 5 - Nachrichten speichern und abholen 568
Ausbaustufe 6 - Verbesserungen 571
Fehlerbehandlung - jeder macht mal Fehler 571
Nachrichten empfangen - aber echt jetzt! 574
Den Server laufen lassen575
Ausblick 575
Non-Blocking IO 575
Sicherheit 576
Weitere Features 580
TEIL VIII
Python im World Wide Web 583
Kapitel 33
Wie das World Wide Web aufgebaut ist585
Hypertext - verknüpfte Texte 585
Das WWW586
Die Einzelteile im Überblick 586
Webseiten und Ressourcen 587
Browser 587
Webserver 588
22 Inhaltsverzeichnis
Die Anatomie einer Webseite 588
HTML - das Grundgerüst588
Tags - Bausteine der Websprache 590
CSS - Webseiten mit Stil 592
JavaScript - wenn es zappeln soll 593
Seiten mit dem eingebauten Webserver ausliefern 594
Webanwendungen - mehr als nur eine Seite 596
Das Hypertext-Transfer-Protokoll 596
HTTP-Anfragen 597
HTTP-Methoden und -Ressourcen 597
Content-Negotiation - Inhalte aushandeln 598
HTTP-Antworten 599
Wichtige Status-Codes 599
Wichtige Header 600
Kapitel 34
Im Web surfen 603
Hausmittelchen: Webseiten öffnen mit der urllib 603
Requests: HTTP für Menschen604
Im Essen stochern mit Beautiful Soup 605
Scrapy - Daten im Spinnennetz 608
Die HTML-Struktur 610
Auswahlverfahren: CSS-Selektoren 611
Ein erstes Krabbeltier 613
Unterseiten aufrufen 614
Datensätze ausgeben 615
Kapitel 35
Profi-Webseiten mit Django 619
Was ist Django? 620
Datenbanken 621
Eine Vereinsseite623
Installieren623
Ein Projekt anlegen 624
Den Webserver starten 626
Eine App anlegen 627
Ihre Startseite 629
Das Schablonen-System 633
Ein Menü einfügen 635
CSS-Dateien einbinden 637
Platzhalter ausstanzen 640
Unterseiten einfügen 643
Daten modellieren 646
Wozu dienen die Modelle? 647
Der Ablauf beim Modellieren 647
Model-Planning 648
Modell erstellen 649
Migrationen generieren 651
Inhaltsverzeichnis 23
Zustand der Datenbank überprüfen 651
Migrationen erzeugen 653
Migration anwenden 653
Model ausprobieren 654
Das Modell aktualisieren655
Rasenmäher-Übersichtsseiten657
Detailseiten für Rasenmäher 661
Detailseiten verlinken 663
Im Lieferumfang: Das Admin-Backend 664
Zusammenfassung 670
TEIL IX
Der Python im Daten-Dschungel 673
Kapitel 36
Interaktive Notebooks 675
Projekt Jupyter 675
Die Notebook-Umgebung installieren 676
Erste Schritte im Notebook 677
Tastenkürzel - Finger weg von der Maus 678
Code und Dokumentation 679
Magische Zellen 681
Hilfe, ich habe mich verlaufen!681
Interaktive Zellen 683
Kapitel 37
Daten jonglieren mit Pandas 689
Datensätze laden 689
Zeilen ausgeben690
Spalten anzeigen692
Series-Objekte: Schön der Reihe nach 693
Deskriptive Statistiken generieren 695
Zeilen aus Series und DataFrames abfragen 696
Interaktiv filtern 698
Daten gruppieren 700
Fehlende Daten entfernen 704
Resampling - Zeitreihen untersuchen 706
Kapitel 38
Linien, Balken, Torten - Daten visualisieren mit
Matplotlib 711
Matplotlib - wie die Axes im Walde 711
Interaktive Plots 714
Eine kleine Diagramm-Galerie717
Torten- und Balkendiagramme718
Heatmaps 721
Boxplots 723
Streudiagramme 725
Histogramme 727
Ausblick: Schnellere und schönere Diagramme 729
24 Inhaltsverzeichnis
TEIL X
GUI-Programmierung 731
Kapitel 39
Ansichtssache - Programme mit GUI 733
Alternativen - was gibt es sonst so?733
Vorteile 734
Nachteile 735
Herausforderungen 738
Kapitel 40
GUIs mit tkinter 739
Sprechen Sie GUI? 740
Der Entwurf einer GUI-Anwendung 741
Die Problemstellung umreißen742
Eine Skizze des Ablaufs 743
Eine Skizze der GUI 744
Umsetzung746
Ein Fenster erzeugen 746
Widgets hinzufügen 748
Widgets arrangieren 750
Das Layout auflockern 752
Eine Datei öffnen 752
Eine Aktion per Mausklick auslösen 753
Einen Datei-Dialog öffnen754
Die gewählte Datei anzeigen 755
Die Datei hashen 759
Verfügbare Algorithmen anzeigen 759
Einen Algorithmus auswählen 760
Den Hash-Wert berechnen 763
Den Hash-Wert anzeigen764
Fehlerbehandlung765
In die Zwischenablage kopieren768
Statusanzeige updaten 769
Große Dateien hashen 770
Den Fortschrittsbalken aktualisieren 771
Häppchenweise hashen 771
Fortschritt herauslesen 773
Hintergrund-Thread 775
Abschließende Feinarbeiten - der letzte Schliff 777
Gutes Aussehen? Kein Thema!778
Aufgelöst - den Tränen nah 781
Die Skalierung anpassen783
GUI ohne Konsolenfenster starten 785
Windows 785
macOS 785
Linux 785
Inhaltsverzeichnis 25
TEIL XI
Der Top-Ten-Teil 789
Kapitel 41
Dos and Don'ts 791
Zehn Dinge, die Sie tun sollten791
Zehn Dinge, die Sie unterlassen sollten 792
Kapitel 42
Zehn elegante Einzeiler 793
Zwei Variablen vertauschen 793
Negativ Runden 793
Aus einer Liste einen String machen793
Eine verschachtelte Liste plätten 794
Doppelte Elemente entfernen794
Eine Liste paarweise durchlaufen 794
Vier Items gleichzeitig iterieren 794
Zwei Listen zu einem Dictionary kombinieren 795
Eine Matrix transponieren 795
Eine geheime Nachricht dekodieren796
Stichwortverzeichnis 797
Über den Autor 27
Danksagung 29
Einleitung 31
Törichte Annahmen über die Leser 31
Wie Sie dieses Buch nutzen können 32
Was Sie nicht lesen müssen 32
Wie dieses Buch aufgebaut ist 32
Symbole, die in diesem Buch verwendet werden 34
Konventionen in diesem Buch 35
TEIL I
Willkommen in Python-City 37
Kapitel 1
Python - eine Hochglanzbroschüre 39
Was Python so interessant macht 40
Dunkle Flecken - was an Python manchmal nicht so schön ist 41
Infrastruktur und Dienstleistungen 42
Haushalt und Wirtschaft 43
Politische Entscheidungsprozesse 44
Philosophie 44
Willkommen 45
Kapitel 2
Der Einzug in die neue Wohnung 47
Was wird installiert? 47
Windows 48
1 Installer herunterladen 48
2 Features auswählen 49
3 Anpassungen vornehmen 50
4 Installieren 50
5 Installation prüfen 51
macOS 52
1 Installer herunterladen 52
2 Installer ausführen 52
3 Ziel auswählen 52
4 Installation anpassen 52
4 Abwarten und Tee trinken 53
5 Installation testen 53
12 Inhaltsverzeichnis
Linux 54
Ubuntu 54
Fedora 55
Einer für alle 56
Windows 56
Linux56
macOS 57
Kapitel 3
Die Nachbarschaft kennenlernen 59
Die Kommandozeile starten 59
Windows 60
macOS 60
Linux60
Auf der Kommandozeile 61
Wo bin ich?62
Befehle für die Kommandozeile 63
Code ausprobieren 65
Die Wahl des Editors 66
Programme ausführen 67
Kapitel 4
Exposition auf dem Stadtfest - ein erster Blick in den Code 69
Ausführung 71
Vogelperspektive 72
Ein Docstring 74
Eine Zahl ausdenken 75
Eine erste Runde drehen 75
Raten 76
Hast du einen Tipp? 79
Weiter geht's! 80
Kapitel 5
Syntax - die lokale Mundart 81
Verschiedene Ausdrucksformen 81
Zeilen 82
Schlüsselwörter, Anweisungen und Ausdrücke 84
Zusammengesetzte Anweisungen 86
Einrückung 87
Variablen 89
Namensfindung 90
Literale 91
Objekte 93
Inhaltsverzeichnis 13
TEIL II
Alles unter Kontrolle 95
Kapitel 6
Mit Wenn und Aber - Bedingungen stellen 97
Verzweigungen im Programmablauf97
If-Anweisungen 98
If-Ausdrücke100
Musterabgleiche101
Kapitel 7
Anweisungen wiederholen mit Schleifen 105
Wiederholungen mit while 105
Break and Continue 107
For-Schleifen 109
Kapitel 8
Der eingebaute Taschenrechner - ein bisschen Mathe 113
Zahlen 113
Exkurs: Zahlensysteme114
Binärzahlen 115
Hexadezimalzahlen 116
Konvertieren 117
Große Zahlen 117
Kommazahlen 118
Festkommazahlen 119
Brüche 120
Rechnen 120
Operatorrangfolge 123
Funktionen für mathematische Probleme 123
Kapitel 9
Wahrheit oder Pflicht - logische Ausdrücke formulieren 125
Wahrheitswerte 125
Truthy-Falsy 126
Vergleichsoperatoren 128
Verneinung 129
Logische Operatoren 130
AND - logisches Und 130
OR - logisches Oder 131
XOR - logisches Entweder-Oder132
Logische Gesetze 134
Distributivgesetz 135
De-Morgansche Gesetze137
Tipps139
14 Inhaltsverzeichnis
Kapitel 10
Verpackungstechnik - eingebaute Container-Datentypen 141
Listen 141
Listen aufbauen und bearbeiten 142
Metadaten abfragen 144
Sortieren 146
Einzelne Elemente abfragen 146
Listen zerschnippeln - Slicing 147
Tupel 149
Einpacken - Auspacken 151
Benannte Tupel 153
Dictionarys154
Dictionarys iterieren 155
Schlüsseldienst 156
Sets157
Einmalige Elemente 157
Teilmengen159
Schnittmenge 160
Vereinigungsmenge 161
Differenzmenge 163
Symmetrische Differenz 163
Zusammenfassung 164
Weitere Datentypen 164
Frozensets 165
Bytes und Byte-Array 165
Arrays, Structs165
und viele andere mehr166
Kapitel 11
Comprehensions - selbstverständliche Listen 167
List-Comprehensions 168
Iteration 169
Projektion 169
Selektion 170
Set-Comprehensions 171
Dict-Comprehensions 171
Generatoren statt Tupel-Comprehensions 172
Beispiel: Ein Balkendiagramm173
Schleife oder Comprehension?176
Sonderfälle177
"ftoc-new_PrintPDF" - 2025/4/23 - 1:53 - page 15 - #5
Inhaltsverzeichnis 15
TEIL III
Buchstabensuppe 179
Kapitel 12
Strings - Python als Schreibmaschine 181
Auf einen Blick 182
Syntax 183
String-Objekte 183
Mehrzeilige Strings 183
Gemischte Anführungszeichen184
Ausbruch mit Escape-Zeichen 185
Texte einlesen 185
Texte ausgeben 186
Steuerzeichen 188
str - Objekte in Strings konvertieren190
Variablen im Text formatieren190
Interpolation mit f-Strings 191
Früher war %(alle)s anders 192
Explizites Formatieren 193
Minisprache zur Formatierung193
Zahlen anders darstellen193
Zahlen runden 194
Werte ausrichten und auffüllen 194
Datumsangaben formatieren 195
Wichtige Methoden 196
Kapitel 13
Mit regulären Ausdrücken Buchstaben aus der Suppe
fischen199
Textmuster beschreiben 200
Gebräuchliche Zeichenklassen204
Gebräuchliche Methoden 206
Vorne suchen - rematch207
Auch weiter hinten suchen - research 208
Alle Vorkommen ausfindig machen - refindall 208
Vorkommen mit Metadaten - refinditer 208
Vorkommen ersetzen mit resub 209
Strings zerteilen mit resplit 209
Beispiel: Nach Vereinbarung 209
Reguläre Ausdrücke in der Praxis 217
Fallstrick: Gierige Ausdrücke 219
Nützliche Rezepte 220
Einen Text nach Zahlen durchsuchen 220
Überflüssige Leerzeichen in einem Text zusammenfalten 220
Alle Schreibweisen von 'Mayer' finden 221
Einen Text in Wörter zerlegen 221
Auskommentierte Zeilen in einem Python-Programm ausgeben 221
HTML-Farbcodes in einer css-Datei finden 221
16 Inhaltsverzeichnis
Kapitel 14
Surfen im Dateisystem 223
Die Qual der Wahl 223
Das aktuelle Verzeichnis herausfinden 224
Die aktuelle Programmdatei finden 225
Verzeichnisse normalisieren 226
Pfade verbinden und lösen 226
Verzeichnis oder Datei?227
Dateien in einem Verzeichnis auflisten 228
Dateien verschieben und kopieren 230
Kapitel 15
Für Ihre Unterlagen - Dateien lesen und schreiben 231
Textdateien 231
Buchstabenweise lesen 233
Zeilenweise lesen234
Dateien schließen235
Dateimodi 237
Lesen und Schreiben gleichzeitig 239
Binärdateien 242
Bytes-Objekte 243
Byte-Blöcke lesen244
Bytes interpretieren (als PNG) 246
Kapitel 16
Bl\xc3\xb6des Encoding 251
Am Anfang war das ASCII 252
Codepages253
Mit Unicode gegen den Zeichensalat255
UTF-8 257
Unicode-Support in Python 259
Wie encode ich richtig?260
TEIL IV
Objekte und Funktionen263
Kapitel 17
Wie Funktionen funktionieren 265
Built-in Functions 265
Eigene Funktionen 266
Funktionen definieren 267
Im Rumpf 268
Funktionen aufrufen 269
Funktionsobjekte 270
Argumente übergeben 270
Rückgabewerte 272
Namensräume 273
Sichtbarkeit (Scope) von Variablen 275
Inhaltsverzeichnis 17
Jede für sich 277
Parameter279
Argumente prüfen 280
Typ-Fehler vermeiden 282
Optionale Parameter - Default-Argumente 282
Parameterreihenfolge 285
Positionale Übergabe erzwingen 286
Flexible Parameter 28 9
Auspacken beim Aufruf 292
Funktionale Programmierung294
Genau die richtige Menge des Guten296
Funktionen: Keine Bürger zweiter Klasse 297
Funktionen, die Funktionen annehmen 298
Lambdas: Funktionen ohne Namen 300
Funktionen, die Funktionen zurückgeben 303
Rekursion: Funktionen, die sich selbst aufrufen 304
Dekoratoren 306
Kapitel 18
Die Welt verstehen mit Objekten 313
Objektorientierte Programmierung 315
Was sind Objekte?316
Wo kommen die Objekte her? 316
Wo gehen Objekte hin? 318
Was können Objekte so?318
Welche Vorteile haben Objekte? 320
Und die Nachteile? 320
Zusammenfassung 321
Eine Klasse für sich 321
Konstruktoraufruf322
Attribute anlegen 323
Die Ausgabe steuern 324
Auch nur mit Wasser gekocht 325
Vererbung 326
Gleich und Selb 327
Vergleiche 328
Arithmetik 329
Eigene Methoden330
Zusammenfassung 332
Vererbung333
Elternklasse 335
Erben337
Späte Bindung 338
Mixins - misch dich ruhig ein 341
Diskussion 347
18 Inhaltsverzeichnis
Kapitel 19
Exceptions - ausnahmsweise keine Katastrophe349
Exceptions behandeln 352
Try - Versuch macht kluch353
Except - Ausnahmen bestätigen die Regel 353
Else und Finally - zu guter Letzt, zu schlechter Letzt355
Ausnahmen auslösen 355
Eigene Ausnahmen definieren356
Kapitel 20
Daten ohne Ende - Iteratoren und Generatoren365
Das Iterator-Protokoll 366
Generatoren 368
Generator-Ausdrücke 369
Eifrige und verzögerte Auswertung 370
Generator-Funktionen 371
Verschachtelte Generatoren 372
Unendliche Generatoren372
Itertools 374
Generator-Objekte 375
Kapitel 21
Code strukturieren mit Modulen und Paketen 377
Module und Pakete 377
Die Standardbibliothek378
Module importieren 379
Module inspizieren 380
Namensräume 381
Direktimporte 382
Namenskonflikte vermeiden 382
Wie der Interpreter Module sucht 383
Pakete - Code von anderen 384
Wie Sie an Pakete kommen 385
Leser installiert pip 387
Pip installiert Pakete 388
Pip installiert Abhängigkeiten 391
Wo landen die Pakete? 392
Versionen 393
Pakete updaten 394
Spezifische Versionen installieren 395
Virtuelle Umgebungen - Paketkonflikte vermeiden durch venv 395
Versionen einfrieren ... 399
...und wieder auftauen 400
Module und Pakete aus eigener Züchtung401
Ausführbare Module importieren 402
Python-Code in einem Verzeichnis 404
Packungsbeilagen für den Versand 406
Inhaltsverzeichnis 19
TEIL V
Weniger kaputte Software 411
Kapitel 22
Stilfrage - was lesbaren Code ausmacht 413
Ein Befehl pro Zeile 414
Zeilenlänge unter 80 Zeichen 414
Hören Sie auf lange Zeilen! 416
Imports gehören nach oben 418
Leerzeichen vereinzeln418
Schleppkommata zum Zeilenschubsen 419
Unwirkliche Vergleiche mit Booleans419
Kapitel 23
Schleifen, trimmen, jäten421
Formatierer - den Code geraderücken 421
Linting - die Fusselbürste für Ihren Code 423
Sicherheitsprobleme vermeiden mit Bandit 428
Kapitel 24
Testen, Testen, Testen 431
Was ist ein Test?431
Intuitives Testen - jeder ist ein Tester432
doctest - Tests als Dokumentation 434
Das System under Test - die Wurst, um die es geht435
Ein erster Test 436
Doctest ausführen 437
Weitere Tests hinzufügen 438
Mit Tests gegen den Fehlerteufel 440
Ausnahmen testen 445
Testgetriebene Entwicklung 447
Schreiben Sie einen Test448
Rot - ein fehlgeschlagener Test448
Grün - ein erfolgreicher Test 449
Refactoring - notwendige Aufräumarbeiten449
unittest - wenn es mal komplexer wird 451
Die Anatomie eines Unit-Tests452
Assertions - große Erwartungen 454
unittest ausführen 455
Eine Funktion testgetrieben entwickeln 457
Refactoring - jetzt mit Sicherung 464
Fortgeschrittene Themen 467
Doppelgänger - Mocks und Stubs 468
Setup und Teardown 473
Kapitel 25
Typing - dem Interpreter Ratschläge geben475
Typ-Prüfung für Variablen 477
für Sammlungen 479
20 Inhaltsverzeichnis
für Funktionen 481
für generische Funktionen 482
für generische Listen483
für bestimmte Protokolle 484
für Datenklassen 486
TEIL VI
Wartezeiten vermeiden 489
Kapitel 26
Arbeitsteilung - wie ein Computer zwei Dinge gleichzeitig
erledigt 491
Multitasking - geteilte Aufmerksamkeit 492
Parallelisierung - geteiltes Leid 493
Zusammenfassung 494
Kapitel 27
Threads - nicht den Faden verlieren 495
Der rote Faden 495
Wofür Threads gut sind497
Wofür Threads nicht gut sind 498
Threads einfädeln 499
Locks - einer nach dem anderen 501
Teuflische Hintergrund-Threads 504
Kapitel 28
Multiprocessing - Arbeit auf mehrere Prozesse verteilen511
Nebenläufigkeit - ein Experiment 511
Aufgaben im Pool ausführen 516
Kapitel 29
Async - wenn Sie nicht auf IO warten möchten 519
TEIL VII
Netzwerkprogrammierung 523
Kapitel 30
Wie Netzwerke aufgebaut sind 525
Wie werden Daten übertragen? 526
Protokolle - Regeln zur Verständigung 527
Ein vereinfachtes Schichtenmodell 528
Die Anwendungsschicht 528
Die Transportschicht 529
Die Vermittlungsschicht 529
Die Übertragungsschicht529
Von oben nach unten 529
Gebräuchliche Protokolle 530
Die Transportschicht unter der Lupe531
UDP - schnell, aber unzuverlässig 531
Inhaltsverzeichnis 21
TCP - zuverlässig, aber langsam532
UDP oder TCP? 532
Header-Daten 533
Die Port-Nummer 534
IP-Adressen 535
Die eigene IP-Adresse herausfinden537
Kapitel 31
UDP - wenn's schnell gehen soll 539
Katz und Maus - Server und Client 539
Vorbereitung 540
Server - alles für die Katz 541
Client - hier kommt die Maus 543
Die Maus auf die Katze loslassen 545
'Richtige' IP-Adressen 546
Kapitel 32
TCP - wenn es ankommen muss 549
Verbindungsaufbau 549
Datenaustausch552
Daten empfangen553
Nachrichten 554
Over & Out555
Beispiel: Ein Briefkasten für genau eine Postkarte557
Ein einfaches Protokoll 557
Ausbaustufe 1 - ein Grundgerüst für Client und Server 559
Ausbaustufe 2 - ein erster Austausch561
Ausbaustufe 3 - Nachrichten lesen und schreiben 562
Ausbaustufe 4 - diskrete Typen566
Ausbaustufe 5 - Nachrichten speichern und abholen 568
Ausbaustufe 6 - Verbesserungen 571
Fehlerbehandlung - jeder macht mal Fehler 571
Nachrichten empfangen - aber echt jetzt! 574
Den Server laufen lassen575
Ausblick 575
Non-Blocking IO 575
Sicherheit 576
Weitere Features 580
TEIL VIII
Python im World Wide Web 583
Kapitel 33
Wie das World Wide Web aufgebaut ist585
Hypertext - verknüpfte Texte 585
Das WWW586
Die Einzelteile im Überblick 586
Webseiten und Ressourcen 587
Browser 587
Webserver 588
22 Inhaltsverzeichnis
Die Anatomie einer Webseite 588
HTML - das Grundgerüst588
Tags - Bausteine der Websprache 590
CSS - Webseiten mit Stil 592
JavaScript - wenn es zappeln soll 593
Seiten mit dem eingebauten Webserver ausliefern 594
Webanwendungen - mehr als nur eine Seite 596
Das Hypertext-Transfer-Protokoll 596
HTTP-Anfragen 597
HTTP-Methoden und -Ressourcen 597
Content-Negotiation - Inhalte aushandeln 598
HTTP-Antworten 599
Wichtige Status-Codes 599
Wichtige Header 600
Kapitel 34
Im Web surfen 603
Hausmittelchen: Webseiten öffnen mit der urllib 603
Requests: HTTP für Menschen604
Im Essen stochern mit Beautiful Soup 605
Scrapy - Daten im Spinnennetz 608
Die HTML-Struktur 610
Auswahlverfahren: CSS-Selektoren 611
Ein erstes Krabbeltier 613
Unterseiten aufrufen 614
Datensätze ausgeben 615
Kapitel 35
Profi-Webseiten mit Django 619
Was ist Django? 620
Datenbanken 621
Eine Vereinsseite623
Installieren623
Ein Projekt anlegen 624
Den Webserver starten 626
Eine App anlegen 627
Ihre Startseite 629
Das Schablonen-System 633
Ein Menü einfügen 635
CSS-Dateien einbinden 637
Platzhalter ausstanzen 640
Unterseiten einfügen 643
Daten modellieren 646
Wozu dienen die Modelle? 647
Der Ablauf beim Modellieren 647
Model-Planning 648
Modell erstellen 649
Migrationen generieren 651
Inhaltsverzeichnis 23
Zustand der Datenbank überprüfen 651
Migrationen erzeugen 653
Migration anwenden 653
Model ausprobieren 654
Das Modell aktualisieren655
Rasenmäher-Übersichtsseiten657
Detailseiten für Rasenmäher 661
Detailseiten verlinken 663
Im Lieferumfang: Das Admin-Backend 664
Zusammenfassung 670
TEIL IX
Der Python im Daten-Dschungel 673
Kapitel 36
Interaktive Notebooks 675
Projekt Jupyter 675
Die Notebook-Umgebung installieren 676
Erste Schritte im Notebook 677
Tastenkürzel - Finger weg von der Maus 678
Code und Dokumentation 679
Magische Zellen 681
Hilfe, ich habe mich verlaufen!681
Interaktive Zellen 683
Kapitel 37
Daten jonglieren mit Pandas 689
Datensätze laden 689
Zeilen ausgeben690
Spalten anzeigen692
Series-Objekte: Schön der Reihe nach 693
Deskriptive Statistiken generieren 695
Zeilen aus Series und DataFrames abfragen 696
Interaktiv filtern 698
Daten gruppieren 700
Fehlende Daten entfernen 704
Resampling - Zeitreihen untersuchen 706
Kapitel 38
Linien, Balken, Torten - Daten visualisieren mit
Matplotlib 711
Matplotlib - wie die Axes im Walde 711
Interaktive Plots 714
Eine kleine Diagramm-Galerie717
Torten- und Balkendiagramme718
Heatmaps 721
Boxplots 723
Streudiagramme 725
Histogramme 727
Ausblick: Schnellere und schönere Diagramme 729
24 Inhaltsverzeichnis
TEIL X
GUI-Programmierung 731
Kapitel 39
Ansichtssache - Programme mit GUI 733
Alternativen - was gibt es sonst so?733
Vorteile 734
Nachteile 735
Herausforderungen 738
Kapitel 40
GUIs mit tkinter 739
Sprechen Sie GUI? 740
Der Entwurf einer GUI-Anwendung 741
Die Problemstellung umreißen742
Eine Skizze des Ablaufs 743
Eine Skizze der GUI 744
Umsetzung746
Ein Fenster erzeugen 746
Widgets hinzufügen 748
Widgets arrangieren 750
Das Layout auflockern 752
Eine Datei öffnen 752
Eine Aktion per Mausklick auslösen 753
Einen Datei-Dialog öffnen754
Die gewählte Datei anzeigen 755
Die Datei hashen 759
Verfügbare Algorithmen anzeigen 759
Einen Algorithmus auswählen 760
Den Hash-Wert berechnen 763
Den Hash-Wert anzeigen764
Fehlerbehandlung765
In die Zwischenablage kopieren768
Statusanzeige updaten 769
Große Dateien hashen 770
Den Fortschrittsbalken aktualisieren 771
Häppchenweise hashen 771
Fortschritt herauslesen 773
Hintergrund-Thread 775
Abschließende Feinarbeiten - der letzte Schliff 777
Gutes Aussehen? Kein Thema!778
Aufgelöst - den Tränen nah 781
Die Skalierung anpassen783
GUI ohne Konsolenfenster starten 785
Windows 785
macOS 785
Linux 785
Inhaltsverzeichnis 25
TEIL XI
Der Top-Ten-Teil 789
Kapitel 41
Dos and Don'ts 791
Zehn Dinge, die Sie tun sollten791
Zehn Dinge, die Sie unterlassen sollten 792
Kapitel 42
Zehn elegante Einzeiler 793
Zwei Variablen vertauschen 793
Negativ Runden 793
Aus einer Liste einen String machen793
Eine verschachtelte Liste plätten 794
Doppelte Elemente entfernen794
Eine Liste paarweise durchlaufen 794
Vier Items gleichzeitig iterieren 794
Zwei Listen zu einem Dictionary kombinieren 795
Eine Matrix transponieren 795
Eine geheime Nachricht dekodieren796
Stichwortverzeichnis 797