Entdecken Sie die Möglichkeiten von Python 3. Egal, ob Sie erst anfangen, mit Python zu arbeiten oder bei Ihrer Arbeit etwas nachschlagen möchten - in diesem Buch finden Sie alles, was Sie zu Python wissen müssen. Nach einer Einführung in die Sprache folgt eine umfassende Sprachreferenz, die Beschreibung der Standardbibliothek und ausführliche Informationen zu professionellen Themen. Dabei führen die Autoren auch in Tools wie PyPy, Numba oder pandas ein. Ob GUI-Programmierung, Webentwicklung oder Data Science: Dieses Buch macht den persönlichen Werkzeugkasten perfekt.
Aus dem Inhalt:
- Sprachgrundlagen und objektorientierte Programmierung
- Einführung in Python
- Modularisierung
- Reguläre Ausdrücke
- Datums- und Zeitfunktionen
- Thread-Programmierung
- GUI-Programmierung
- Webentwicklung mit Django
- Mathematische Module
- Schnittstellen zum Betriebssystem
- Netzwerkkommunikation
- Distribution von Python-Projekten
- Programmoptimierung
- Wissenschaftliches Rechnen
- Data Science
Inhaltsverzeichnis
1. Einleitung . . . 31
1. 1 . . . Warum haben wir dieses Buch geschrieben? . . . 31
1. 2 . . . Was leistet dieses Buch? . . . 32
1. 3 . . . Wie ist dieses Buch aufgebaut? . . . 32
1. 4 . . . Wer sollte dieses Buch wie lesen? . . . 33
1. 5 . . . Beispielprogramme . . . 34
1. 6 . . . Vorwort zur achten Auflage . . . 34
1. 7 . . . Danksagung . . . 35
2. Die Programmiersprache Python . . . 39
2. 1 . . . Geschichte und Entstehung . . . 39
2. 2 . . . Grundlegende Konzepte . . . 40
2. 3 . . . Einsatzmöglichkeiten und Stärken . . . 41
2. 4 . . . Die Installation von Python . . . 43
2. 5 . . . Drittanbietermodule installieren . . . 45
2. 6 . . . Die Verwendung von Python . . . 46
TEIL I. Einstieg in Python . . . 49
3. Erste Schritte im interaktiven Modus . . . 51
3. 1 . . . Ganze Zahlen . . . 52
3. 2 . . . Gleitkommazahlen . . . 53
3. 3 . . . Zeichenketten . . . 54
3. 4 . . . Listen . . . 55
3. 5 . . . Dictionarys . . . 55
3. 6 . . . Variablen . . . 56
3. 7 . . . Logische Ausdrücke . . . 58
3. 8 . . . Funktionen und Methoden . . . 60
3. 9 . . . Bildschirmausgaben . . . 62
3. 10 . . . Module . . . 63
4. Der Weg zum ersten Programm . . . 65
4. 1 . . . Tippen, kompilieren, testen . . . 65
4. 2 . . . Grundstruktur eines Python-Programms . . . 69
4. 3 . . . Das erste Programm . . . 73
4. 4 . . . Kommentare . . . 75
4. 5 . . . Der Fehlerfall . . . 76
5. Kontrollstrukturen . . . 79
5. 1 . . . Fallunterscheidungen . . . 79
5. 2 . . . Schleifen . . . 83
5. 3 . . . Die pass-Anweisung . . . 91
5. 4 . . . Zuweisungsausdrücke . . . 91
6. Dateien . . . 95
6. 1 . . . Datenströme . . . 95
6. 2 . . . Daten aus einer Datei auslesen . . . 96
6. 3 . . . Daten in eine Datei schreiben . . . 101
6. 4 . . . Das Dateiobjekt erzeugen . . . 102
7. Das Datenmodell . . . 109
7. 1 . . . Die Struktur von Instanzen . . . 111
7. 2 . . . Referenzen löschen . . . 116
7. 3 . . . Mutable vs. immutable Datentypen . . . 118
8. Funktionen, Methoden und Attribute . . . 123
8. 1 . . . Parameter von Funktionen und Methoden . . . 123
8. 2 . . . Attribute . . . 126
9. Informationsquellen zu Python . . . 129
9. 1 . . . Die Built-in Function help . . . 129
9. 2 . . . Die Onlinedokumentation . . . 130
9. 3 . . . PEPs . . . 130
TEIL II. Datentypen . . . 133
10. Basisdatentypen: eine Übersicht . . . 135
10. 1 . . . Das Nichts -- NoneType . . . 136
10. 2 . . . Operatoren . . . 137
11. Numerische Datentypen . . . 143
11. 1 . . . Arithmetische Operatoren . . . 143
11. 2 . . . Vergleichende Operatoren . . . 145
11. 3 . . . Konvertierung zwischen numerischen Datentypen . . . 146
11. 4 . . . Ganzzahlen -- int . . . 147
11. 5 . . . Gleitkommazahlen -- float . . . 154
11. 6 . . . Boolesche Werte -- bool . . . 157
11. 7 . . . Komplexe Zahlen -- complex . . . 163
12. Sequenzielle Datentypen . . . 167
12. 1 . . . Der Unterschied zwischen Text und Binärdaten . . . 167
12. 2 . . . Operationen auf Instanzen sequenzieller Datentypen . . . 169
12. 3 . . . Listen -- list . . . 181
12. 4 . . . Unveränderliche Listen -- tuple . . . 195
12. 5 . . . Strings -- str, bytes, bytearray . . . 199
13. Zuordnungen und Mengen . . . 239
13. 1 . . . Dictionary -- dict . . . 239
13. 2 . . . Mengen -- set und frozenset . . . 253
14. Collections . . . 267
14. 1 . . . Verkettete Dictionarys . . . 267
14. 2 . . . Zählen von Häufigkeiten . . . 268
14. 3 . . . Dictionarys mit Standardwerten . . . 271
14. 4 . . . Doppelt verkettete Listen . . . 272
14. 5 . . . Benannte Tupel . . . 274
15. Datum und Zeit . . . 277
15. 1 . . . Elementare Zeitfunktionen -- time . . . 277
15. 2 . . . Objektorientierte Datumsverwaltung -- datetime . . . 286
15. 3 . . . Zeitzonen -- zoneinfo . . . 296
16. Enumerationen und Flags . . . 303
16. 1 . . . Aufzählungstypen -- Enum . . . 303
16. 2 . . . Aufzählungstypen für Bitmuster -- Flag . . . 305
16. 3 . . . Ganzzahlige Aufzählungstypen -- IntEnum . . . 306
TEIL III. Fortgeschrittene Programmiertechniken . . . 309
17. Funktionen . . . 311
17. 1 . . . Definieren einer Funktion . . . 313
17. 2 . . . Rückgabewerte . . . 314
17. 3 . . . Funktionsobjekte . . . 316
17. 4 . . . Optionale Parameter . . . 317
17. 5 . . . Schlüsselwortparameter . . . 318
17. 6 . . . Beliebige Anzahl von Parametern . . . 319
17. 7 . . . Reine Schlüsselwortparameter . . . 321
17. 8 . . . Reine Positionsparameter . . . 323
17. 9 . . . Unpacking beim Funktionsaufruf . . . 324
17. 10 . . . Seiteneffekte . . . 326
17. 11 . . . Namensräume . . . 329
17. 12 . . . Anonyme Funktionen . . . 336
17. 13 . . . Rekursion . . . 337
17. 14 . . . Eingebaute Funktionen . . . 338
18. Module und Pakete . . . 365
18. 1 . . . Einbinden globaler Module . . . 366
18. 2 . . . Lokale Module . . . 368
18. 3 . . . Pakete . . . 371
18. 4 . . . Das Paket importlib . . . 376
18. 5 . . . Geplante Sprachelemente . . . 377
19. Objektorientierte Programmierung . . . 379
19. 1 . . . Beispiel: Ein nicht objektorientiertes Konto . . . 379
19. 2 . . . Klassen . . . 385
19. 3 . . . Vererbung . . . 390
19. 4 . . . Mehrfachvererbung . . . 403
19. 5 . . . Property-Attribute . . . 404
19. 6 . . . Statische Methoden . . . 407
19. 7 . . . Klassenmethoden . . . 409
19. 8 . . . Klassenattribute . . . 411
19. 9 . . . Built-in Functions für die objektorientierte Programmierung . . . 411
19. 10 . . . Erben von eingebauten Datentypen . . . 415
19. 11 . . . Magic Methods und Magic Attributes . . . 417
19. 12 . . . Datenklassen . . . 438
20. Ausnahmebehandlung . . . 443
20. 1 . . . Exceptions . . . 443
20. 2 . . . Zusicherungen -- assert . . . 459
20. 3 . . . Warnungen . . . 460
20. 4 . . . Exception Groups . . . 461
21. Generatoren und Iteratoren . . . 467
21. 1 . . . Generatoren . . . 467
21. 2 . . . Iteratoren . . . 474
21. 3 . . . Spezielle Generatoren -- itertools . . . 485
21. 4 . . . Generatoren als Konsumenten . . . 495
22. Kontext-Manager . . . 501
22. 1 . . . Die with-Anweisung . . . 501
22. 2 . . . Hilfsfunktionen für with-Kontexte -- contextlib . . . 504
23. Dekoratoren . . . 509
23. 1 . . . Funktionsdekoratoren . . . 509
23. 2 . . . Klassendekoratoren . . . 515
23. 3 . . . Das Modul functools . . . 516
24. Annotationen und statische Typprüfung . . . 523
24. 1 . . . Annotationen . . . 525
24. 2 . . . Type Hints -- das Modul typing . . . 532
24. 3 . . . Statische Typprüfung in Python -- mypy . . . 539
25. Structural Pattern Matching . . . 541
25. 1 . . . Die match-Anweisung . . . 541
25. 2 . . . Arten von Mustern in der case-Anweisung . . . 542
TEIL IV. Die Standardbibliothek . . . 559
26. Mathematik . . . 561
26. 1 . . . Mathematische Funktionen -- math, cmath . . . 561
26. 2 . . . Zufallszahlengenerator -- random . . . 568
26. 3 . . . Statistische Berechnungen -- statistics . . . 572
26. 4 . . . Intuitive Dezimalzahlen -- decimal . . . 574
26. 5 . . . Hash-Funktionen -- hashlib . . . 580
27. Bildschirmausgaben und Logging . . . 589
27. 1 . . . Übersichtliche Ausgabe komplexer Objekte -- pprint . . . 589
27. 2 . . . Logdateien -- logging . . . 591
28. Reguläre Ausdrücke . . . 599
28. 1 . . . Die Syntax regulärer Ausdrücke . . . 599
28. 2 . . . Verwendung des Moduls re . . . 611
28. 3 . . . Ein einfaches Beispielprogramm -- Searching . . . 618
28. 4 . . . Ein komplexeres Beispielprogramm -- Matching . . . 620
28. 5 . . . Kommentare in regulären Ausdrücken . . . 623
28. 6 . . . Katastrophales Backtracking . . . 624
29. Schnittstellen zum Betriebssystem und zur Laufzeitumgebung . . . 627
29. 1 . . . Funktionen des Betriebssystems -- os . . . 627
29. 2 . . . Starten von Subprozessen -- subprocess . . . 630
29. 3 . . . Zugriff auf die Laufzeitumgebung -- sys . . . 633
29. 4 . . . Kommandozeilenparameter -- argparse . . . 638
30. Das Dateisystem . . . 647
30. 1 . . . Grundlegendes zu Dateisystemen und Pfaden . . . 647
30. 2 . . . Die moderne Lösung -- pathlib . . . 649
30. 3 . . . Zugriff auf das Dateisystem mit os . . . 656
30. 4 . . . Dateipfade -- os. path . . . 664
30. 5 . . . Zugriff auf das Dateisystem -- shutil . . . 668
30. 6 . . . Temporäre Dateien -- tempfile . . . 674
31. Parallele Programmierung . . . 677
31. 1 . . . Prozesse, Multitasking und Threads . . . 677
31. 2 . . . Pythons Schnittstellen zur Parallelisierung . . . 682
31. 3 . . . Die abstrakte Schnittstelle -- concurrent. futures . . . 683
31. 4 . . . Die flexible Schnittstelle -- threading und multiprocessing . . . 694
31. 5 . . . Die kooperative Schnittstelle -- asyncio . . . 706
31. 6 . . . Fazit: Welche Schnittstelle ist die richtige? . . . 725
32. Datenspeicherung . . . 727
32. 1 . . . Das Datenaustauschformat JSON -- json . . . 727
32. 2 . . . Serialisierung von Instanzen -- pickle . . . 729
32. 3 . . . Das Tabellenformat CSV -- csv . . . 733
32. 4 . . . Komprimierte Dateien und Archive . . . 739
32. 5 . . . Datenbanken . . . 741
32. 6 . . . XML . . . 761
33. Netzwerkkommunikation . . . 777
33. 1 . . . Die Socket API . . . 778
33. 2 . . . XML-RPC . . . 797
34. Zugriff auf Ressourcen im Internet . . . 807
34. 1 . . . Protokolle . . . 807
34. 2 . . . Lösungen . . . 808
34. 3 . . . Der einfache Weg -- requests . . . 809
34. 4 . . . URLs -- urllib . . . 812
34. 5 . . . FTP -- ftplib . . . 820
35. E-Mail . . . 829
35. 1 . . . SMTP -- smtplib . . . 829
35. 2 . . . POP3 -- poplib . . . 832
35. 3 . . . IMAP4 -- imaplib . . . 837
35. 4 . . . Erstellen komplexer E-Mails -- email . . . 843
36. Debugging und Qualitätssicherung . . . 847
36. 1 . . . Der Debugger . . . 847
36. 2 . . . Automatisiertes Testen . . . 850
36. 3 . . . Analyse des Laufzeitverhaltens . . . 858
37. Dokumentation . . . 869
37. 1 . . . Docstrings . . . 869
37. 2 . . . Automatisches Erstellen einer Dokumentation -- pydoc . . . 871
TEIL V. Weiterführende Themen . . . 873
38. Distribution von Python-Projekten . . . 875
38. 1 . . . Eine Geschichte der Distributionen in Python . . . 875
38. 2 . . . Erstellen von Distributionen -- setuptools . . . 877
38. 3 . . . Erstellen von EXE-Dateien -- cx_Freeze . . . 886
38. 4 . . . Paketmanager . . . 888
38. 5 . . . Lokalisierung von Programmen -- gettext . . . 893
39. Virtuelle Umgebungen . . . 899
39. 1 . . . Das Arbeiten mit virtuellen Umgebungen -- venv . . . 900
39. 2 . . . Virtuelle Umgebungen in Anaconda . . . 901
40. Alternative Interpreter und Compiler . . . 903
40. 1 . . . Just-in-Time-Kompilierung -- PyPy . . . 903
40. 2 . . . Numba . . . 905
40. 3 . . . Anbindung an C und C++ -- Cython . . . 907
40. 4 . . . Die interaktive Python-Shell -- IPython . . . 914
41. Grafische Benutzeroberflächen . . . 923
41. 1 . . . Toolkits . . . 923
41. 2 . . . Einführung in tkinter . . . 925
41. 3 . . . Einführung in PySide6 . . . 972
42. Python als serverseitige Programmiersprache im WWW -- ein Einstieg in Django . . . 1021
42. 1 . . . Konzepte und Besonderheiten von Django . . . 1022
42. 2 . . . Installation von Django . . . 1023
42. 3 . . . Ein neues Django-Projekt erstellen . . . 1024
42. 4 . . . Eine Applikation erstellen . . . 1028
43. Wissenschaftliches Rechnen und Data Science . . . 1069
43. 1 . . . Installation . . . 1070
43. 2 . . . Das Modellprogramm . . . 1071
43. 3 . . . Überblick über die Module numpy und scipy . . . 1080
43. 4 . . . Eine Einführung in die Datenanalyse mit pandas . . . 1090
44. Insiderwissen . . . 1107
44. 1 . . . URLs im Standardbrowser öffnen -- webbrowser . . . 1107
44. 2 . . . Interpretieren von Binärdaten -- struct . . . 1107
44. 3 . . . Versteckte Passworteingabe -- getpass . . . 1110
44. 4 . . . Kommandozeilen-Interpreter -- cmd . . . 1110
44. 5 . . . Dateiinterface für Strings -- io. StringIO . . . 1113
44. 6 . . . Kopieren von Instanzen -- copy . . . 1114
44. 7 . . . Bildverarbeitung -- Pillow . . . 1118
45. Eine Geschichte der Python-Versionen . . . 1129
45. 1 . . . Die Versionshistorie . . . 1129
45. 2 . . . Der Sprung nach Python 3 . . . 1132
Anhang . . . 1139
A. 1 . . . Reservierte Wörter . . . 1139
A. 2 . . . Operatorrangfolge . . . 1139
A. 3 . . . Eingebaute Funktionen . . . 1141
A. 4 . . . Eingebaute Exceptions . . . 1145
A. 5 . . . Python-IDEs . . . 1150
Index . . . 1153