Python 3 - Das umfassende Handbuch
von: Johannes Ernesti, Peter Kaiser
Galileo Press, 2012
ISBN: 9783836219259
Sprache: Deutsch
986 Seiten, Download: 12305 KB
Format: PDF, auch als Online-Lesen
Liebe Leserin, lieber Leser, | 3 | ||
Auf einen Blick | 4 | ||
Inhalt | 6 | ||
Über dieses Buch | 20 | ||
Kapitel 1 | 28 | ||
Überblick über Python | 28 | ||
1.1 Geschichte und Entstehung | 28 | ||
1.2 Grundlegende Konzepte | 29 | ||
1.3 Einsatzmöglichkeiten und Stärken | 30 | ||
1.4 Einsatzbeispiele | 31 | ||
Kapitel 2 | 32 | ||
Die Arbeit mit Python | 32 | ||
2.1 Die Verwendung von Python | 32 | ||
2.1.1 Windows | 34 | ||
2.1.2 Linux | 34 | ||
2.1.3 Mac OS X | 34 | ||
2.2 Tippen, kompilieren, testen | 35 | ||
2.2.1 Shebang | 36 | ||
2.2.2 Interne Abläufe | 37 | ||
Kapitel 3 | 40 | ||
Der interaktive Modus | 40 | ||
3.1 Ganze Zahlen | 41 | ||
3.2 Gleitkommazahlen | 42 | ||
3.3 Zeichenketten | 43 | ||
3.4 Listen | 44 | ||
3.5 Variablen | 44 | ||
3.6 Logische Ausdrücke | 46 | ||
3.7 Funktionen und Methoden | 48 | ||
3.7.1 Funktionen | 48 | ||
3.7.2 Methoden | 49 | ||
3.8 Bildschirmausgaben | 50 | ||
Kapitel 4 | 52 | ||
Grundlegendes zu Python- Programmen | 52 | ||
4.1 Grundstruktur eines Python-Programms | 52 | ||
4.2 Das erste Programm | 54 | ||
4.3 Kommentare | 56 | ||
4.4 Der Fehlerfall | 57 | ||
Kapitel 5 | 60 | ||
Kontrollstrukturen | 60 | ||
5.1 Fallunterscheidungen | 60 | ||
5.1.1 Die if-Anweisung | 61 | ||
5.1.2 Conditional Expressions | 64 | ||
5.2 Schleifen | 65 | ||
5.2.1 Die while-Schleife | 66 | ||
5.2.2 Vorzeitiger Abbruch einer Schleife | 66 | ||
5.2.3 Erkennen eines Schleifenabbruchs | 67 | ||
5.2.4 Vorzeitiger Abbruch eines Schleifendurchlaufs | 69 | ||
5.2.5 Die for-Schleife | 71 | ||
5.2.6 Die for-Schleife als Zählschleife | 72 | ||
5.3 Die pass-Anweisung | 74 | ||
Kapitel 6 | 76 | ||
Das Laufzeitmodell | 76 | ||
6.1 Die Struktur von Instanzen | 78 | ||
6.1.1 Datentyp | 78 | ||
6.1.2 Wert | 79 | ||
6.1.3 Identität | 81 | ||
6.2 Referenzen und Instanzen freigeben | 82 | ||
6.3 Mutable vs. immutable Datentypen | 83 | ||
6.3.1 Mutable Datentypen und Seiteneffekte | 85 | ||
Kapitel 7 | 88 | ||
Basisdatentypen | 88 | ||
7.1 Operatoren | 89 | ||
7.2 Das Nichts - NoneType | 93 | ||
7.3 Numerische Datentypen | 94 | ||
7.3.1 Arithmetische Operatoren | 94 | ||
7.3.2 Vergleichende Operatoren | 96 | ||
7.3.3 Konvertierung zwischen numerischen Datentypen | 97 | ||
7.3.4 Ganzzahlen - int | 97 | ||
7.3.5 Gleitkommazahlen - float | 103 | ||
7.3.6 Boolesche Werte - bool | 105 | ||
7.3.7 Komplexe Zahlen - complex | 111 | ||
7.4 Parameter von Funktionen und Methoden | 114 | ||
7.4.1 Wiederholung | 114 | ||
7.4.2 Parameter | 115 | ||
7.5 Sequentielle Datentypen | 116 | ||
7.5.1 Operationen auf Instanzen sequentieller Datentypen | 119 | ||
7.5.2 Listen - »list« | 129 | ||
7.5.3 Unveränderliche Listen - tuple | 140 | ||
7.5.4 Strings - str, bytes, bytearray | 143 | ||
7.6 Mappings | 174 | ||
7.6.1 Dictionary - dict | 175 | ||
7.7 Mengen | 186 | ||
7.7.1 Die Datentypen set und frozenset | 186 | ||
7.7.2 Veränderliche Mengen - set | 194 | ||
7.7.3 Unveränderliche Mengen - frozenset | 196 | ||
Kapitel 8 | 198 | ||
Dateien | 198 | ||
8.1 Datenströme | 198 | ||
8.2 Daten aus einer Datei auslesen | 199 | ||
8.3 Daten in eine Datei schreiben | 203 | ||
8.4 Verwendung des Dateiobjekts | 205 | ||
Kapitel 9 | 210 | ||
Funktionen | 210 | ||
9.1 Schreiben einer Funktion | 212 | ||
9.2 Funktionsparameter | 216 | ||
9.2.1 Optionale Parameter | 216 | ||
9.2.2 Schlüsselwortparameter | 217 | ||
9.2.3 Beliebige Anzahl von Parametern | 218 | ||
9.2.4 Reine Schlüsselwortparameter | 220 | ||
9.2.5 Entpacken einer Parameterliste | 222 | ||
9.2.6 Seiteneffekte | 223 | ||
9.3 Namensräume | 226 | ||
9.3.1 Zugriff auf globale Variablen - global | 226 | ||
9.3.2 Zugriff auf den globalen Namensraum | 227 | ||
9.3.3 Zugriff auf übergeordnete Namensräume - nonlocal | 228 | ||
9.4 Lokale Funktionen | 230 | ||
9.5 Anonyme Funktionen | 231 | ||
9.6 Rekursion | 232 | ||
9.7 Eingebaute Funktionen | 232 | ||
Kapitel 10 | 258 | ||
Modularisierung | 258 | ||
10.1 Einbinden globaler Module | 258 | ||
10.2 Lokale Module | 261 | ||
10.2.1 Namenskonflikte | 262 | ||
10.2.2 Modulinterne Referenzen | 263 | ||
10.3 Pakete | 263 | ||
10.3.1 Absolute und relative Import-Anweisungen | 266 | ||
10.3.2 Importieren aller Module eines Pakets | 267 | ||
10.4 Built-in Functions | 268 | ||
Kapitel 11 | 270 | ||
Objektorientierung | 270 | ||
11.1 Klassen | 275 | ||
11.1.1 Definieren von Methoden | 277 | ||
11.1.2 Der Konstruktor und die Erzeugung von Attributen | 278 | ||
11.2 Vererbung | 281 | ||
11.2.1 Technische Grundlagen | 282 | ||
11.2.2 Die Klasse GirokontoMitTagesumsatz | 284 | ||
11.2.3 Beispiele möglicher Erweiterungen | 290 | ||
11.2.4 Ausblick | 294 | ||
11.2.5 Mehrfachvererbung | 295 | ||
11.3 Setter und Getter und Property Attributes | 296 | ||
11.4 Klassenattribute und Klassenmethoden sowie statische Methoden | 299 | ||
11.5 Magic Methods und Magic Attributes | 303 | ||
11.5.1 Allgemeine Magic Methods | 303 | ||
11.5.2 Zugriff auf Attribute anpassen | 307 | ||
11.5.3 Operatoren überladen | 310 | ||
11.5.4 Datentypen emulieren | 318 | ||
11.6 Built-in Functions für Objektorientierung | 323 | ||
11.6.1 Funktionen für die Verwaltung der Attribute einer Instanz | 324 | ||
11.6.2 Funktionen für Informationen über die Klassenhierarchie | 325 | ||
11.7 Objektphilosophie | 327 | ||
Kapitel 12 | 330 | ||
Weitere Spracheigenschaften | 330 | ||
12.1 Exception Handling | 330 | ||
12.1.1 Eingebaute Exceptions | 331 | ||
12.1.2 Werfen einer Exception | 335 | ||
12.1.3 Abfangen einer Exception | 336 | ||
12.1.4 Eigene Exceptions | 341 | ||
12.1.5 Erneutes Werfen einer Exception | 343 | ||
12.1.6 Exception Chaining | 345 | ||
12.2 Comprehensions | 347 | ||
12.2.1 List Comprehensions | 347 | ||
12.2.2 Dict Comprehensions | 349 | ||
12.2.3 Set Comprehensions | 350 | ||
12.3 Generatoren | 350 | ||
12.4 Iteratoren | 354 | ||
12.5 Docstrings | 364 | ||
12.6 Interpreter im Interpreter | 366 | ||
12.7 Die with-Anweisung | 369 | ||
12.8 Function Annotations | 372 | ||
12.9 Function Decorator | 374 | ||
12.10 assert | 378 | ||
12.11 Weitere Aspekte der Syntax | 379 | ||
12.11.1 Umbrechen langer Zeilen | 379 | ||
12.11.2 Zusammenfügen mehrerer Zeilen | 380 | ||
12.12 Geplante Sprachelemente | 381 | ||
Kapitel 13 | 386 | ||
Mathematik | 386 | ||
13.1 Mathematische Funktionen - math, cmath | 386 | ||
13.1.1 Zahlentheoretische Funktionen | 390 | ||
13.1.2 Exponential- und Logarithmusfunktionen | 392 | ||
13.1.3 Trigonometrische Funktionen | 393 | ||
13.1.4 Funktionen aus cmath | 395 | ||
13.2 Zufallszahlengenerator - random | 395 | ||
13.2.1 Steuerungsfunktionen | 397 | ||
13.2.2 Funktionen für ganze Zahlen | 398 | ||
13.2.3 Funktionen für Sequenzen | 399 | ||
13.2.4 Alternative Generatoren | 400 | ||
13.3 Präzise Dezimalzahlen - decimal | 400 | ||
13.3.1 Verwendung des Datentyps | 401 | ||
13.3.2 Nichtnumerische Werte | 404 | ||
13.3.3 Das Context-Objekt | 405 | ||
13.4 Spezielle Generatoren - itertools | 406 | ||
Kapitel 14 | 416 | ||
Strings | 416 | ||
14.1 Reguläre Ausdrücke - re | 416 | ||
14.1.1 Syntax regulärer Ausdrücke | 417 | ||
14.1.2 Verwendung des Moduls re | 428 | ||
14.1.3 Ein einfaches Beispielprogramm - Searching | 439 | ||
14.1.4 Ein komplexeres Beispielprogramm - Matching | 440 | ||
14.2 Lokalisierung von Programmen - gettext | 443 | ||
14.2.1 Beispiel für die Verwendung von gettext | 444 | ||
14.3 Hash-Funktionen - hashlib | 447 | ||
14.3.1 Verwendung des Moduls | 449 | ||
14.3.2 Beispiel | 451 | ||
Kapitel 15 | 452 | ||
Datum und Zeit | 452 | ||
15.1 Elementare Zeitfunktionen - time | 452 | ||
15.2 Komfortable Datumsfunktionen - datetime | 461 | ||
15.2.1 Attribute und Datentypen (Übersicht) | 461 | ||
15.2.2 date | 462 | ||
15.2.3 datetime.time | 467 | ||
15.2.4 datetime.datetime | 469 | ||
15.2.5 datetime.timedelta | 478 | ||
Kapitel 16 | 482 | ||
Schnittstelle zum Betriebssystem | 482 | ||
16.1 Funktionen des Betriebssystems - os | 482 | ||
16.1.1 Zugriff auf den eigenen Prozess und andere Prozesse | 483 | ||
16.1.2 Zugriff auf das Dateisystem | 485 | ||
16.2 Umgang mit Pfaden - os.path | 491 | ||
16.3 Zugriff auf das Dateisystem - shutil | 496 | ||
16.3.1 Verzeichnis- und Dateioperationen | 498 | ||
16.3.2 Archivoperationen | 500 | ||
16.4 Zugriff auf die Laufzeitumgebung - sys | 502 | ||
16.4.1 Konstanten | 504 | ||
16.4.2 Exceptions | 507 | ||
16.4.3 Hooks | 508 | ||
16.4.4 Sonstige Funktionen | 510 | ||
16.5 Informationen über das System - platform | 512 | ||
16.6 Kommandozeilenparameter - argparse | 513 | ||
16.6.1 Taschenrechner - ein einfaches Beispiel | 514 | ||
16.6.2 Komplexeres Beispiel | 519 | ||
16.7 Kopieren von Instanzen - copy | 520 | ||
16.8 Das Programmende - atexit | 524 | ||
Kapitel 17 | 526 | ||
Parallele Programmierung | 526 | ||
17.1 Prozesse, Multitasking und Threads | 526 | ||
17.2 Die Thread-Unterstützung in Python | 529 | ||
17.3 Das Modul _thread | 529 | ||
17.3.1 Ein Beispiel für eine rechenintensive Funktion - die Approximation von Pi | 529 | ||
17.3.2 Parallele Berechnung mithilfe von Threads | 530 | ||
17.3.3 Datenaustausch zwischen Threads - locking | 532 | ||
17.4 Das Modul threading | 537 | ||
17.4.1 Locking im threading-Modul | 540 | ||
17.4.2 Worker-Threads und Queues | 543 | ||
17.4.3 Ereignisse definieren - threading.Event | 547 | ||
17.4.4 Barrieren definieren - threading.Barrier | 547 | ||
17.4.5 Eine Funktion zeitlich versetzt ausführen - threading.Timer | 547 | ||
Kapitel 18 | 550 | ||
Datenspeicherung | 550 | ||
18.1 Komprimierte Dateien lesen und schreiben - gzip | 550 | ||
18.2 XML | 552 | ||
18.2.1 DOM - Document Object Model | 554 | ||
18.2.2 SAX - Simple API for XML | 566 | ||
18.2.3 ElementTree | 571 | ||
18.3 Datenbanken | 576 | ||
18.3.1 Beispieldatenbank | 578 | ||
18.3.2 Pythons eingebaute Datenbank - sqlite3 | 580 | ||
18.4 Serialisierung von Instanzen - pickle | 596 | ||
18.5 Das Tabellenformat CSV - csv | 600 | ||
18.6 Temporäre Dateien - tempfile | 605 | ||
Kapitel 19 | 608 | ||
Netzwerkkommunikation | 608 | ||
19.1 Socket API | 610 | ||
19.1.1 Client-Server-Systeme | 611 | ||
19.1.2 UDP | 613 | ||
19.1.3 TCP | 615 | ||
19.1.4 Blockierende und nicht-blockierende Sockets | 617 | ||
19.1.5 Verwendung des Moduls | 619 | ||
19.1.6 Die Socket-Klasse | 622 | ||
19.1.7 Netzwerk-Byte-Order | 626 | ||
19.1.8 Multiplexende Server - select | 628 | ||
19.1.9 socketserver | 631 | ||
19.2 URLs | 635 | ||
19.2.1 Zugriff auf Ressourcen im Internet - urllib.request | 635 | ||
19.2.2 Verarbeiten einer URL - urllib.parse | 641 | ||
19.3 FTP - ftplib | 647 | ||
19.4 E-Mail | 656 | ||
19.4.1 SMTP - smtplib | 656 | ||
19.4.2 POP3 - poplib | 661 | ||
19.4.3 IMAP4 - imaplib | 666 | ||
19.4.4 Erstellen komplexer E-Mails - email | 672 | ||
19.5 Telnet - telnetlib | 677 | ||
19.6 XML-RPC | 681 | ||
19.6.1 Der Server | 681 | ||
19.6.2 Der Client | 686 | ||
19.6.3 Multicall | 688 | ||
19.6.4 Einschränkungen | 689 | ||
Kapitel 20 | 692 | ||
Debugging | 692 | ||
20.1 Der Debugger | 692 | ||
20.2 Inspizieren von Instanzen - inspect | 695 | ||
20.2.1 Datentypen, Attribute und Methoden | 697 | ||
20.2.2 Quellcode | 698 | ||
20.2.3 Klassen und Funktionen | 700 | ||
20.3 Formatierte Ausgabe von Instanzen - pprint | 704 | ||
20.4 Logdateien - logging | 707 | ||
20.4.1 Das Meldungsformat anpassen | 710 | ||
20.4.2 Logging Handler | 712 | ||
20.5 Automatisiertes Testen | 714 | ||
20.5.1 Testfälle in Docstrings - doctest | 714 | ||
20.5.2 Unit Tests - unittest | 719 | ||
20.6 Traceback-Objekte - traceback | 723 | ||
20.7 Analyse des Laufzeitverhaltens | 727 | ||
20.7.1 Laufzeitmessung - timeit | 728 | ||
20.7.2 Profiling - cProfile | 731 | ||
20.7.3 Tracing - trace | 735 | ||
Kapitel 21 | 740 | ||
Distribution von Python-Projekten | 740 | ||
21.1 Erstellen von Distributionen - distutils | 740 | ||
21.1.1 Schreiben des Moduls | 741 | ||
21.1.2 Das Installationsscript | 743 | ||
21.1.3 Erstellen einer Quellcodedistribution | 747 | ||
21.1.4 Erstellen einer Binärdistribution | 749 | ||
21.1.5 Distributionen installieren | 750 | ||
21.2 Erstellen von EXE-Dateien - cx_Freeze | 751 | ||
Kapitel 22 | 754 | ||
Optimierung | 754 | ||
22.1 Die Optimize-Option | 755 | ||
22.2 Mutable vs. immutable | 755 | ||
22.3 Schleifen | 756 | ||
22.4 Funktionsaufrufe | 757 | ||
22.5 C | 757 | ||
22.6 Lookup | 758 | ||
22.7 Exceptions | 758 | ||
22.8 Keyword Arguments | 759 | ||
Kapitel 23 | 760 | ||
Grafische Benutzeroberflächen | 760 | ||
23.1 Toolkits | 760 | ||
23.1.1 Tkinter | 761 | ||
23.1.2 PyGObject | 761 | ||
23.1.3 PyQt | 761 | ||
23.1.4 PySide | 762 | ||
23.1.5 wxPython | 762 | ||
23.2 Einführung in tkinter | 763 | ||
23.2.1 Ein einfaches Beispiel | 763 | ||
23.2.2 Steuerelementvariablen | 765 | ||
23.2.3 Der Packer | 768 | ||
23.2.4 Events | 772 | ||
23.2.5 Die Steuerelemente | 780 | ||
23.2.6 Die Klasse Tk | 818 | ||
23.2.7 Weitere Module | 819 | ||
23.3 Einführung in PyQt | 827 | ||
23.3.1 Installation | 827 | ||
23.3.2 Grundlegende Konzepte von Qt | 828 | ||
23.3.3 Entwicklungsprozess | 830 | ||
23.4 Signale und Slots | 837 | ||
23.5 Wichtige Widgets | 840 | ||
23.5.1 QCheckBox | 841 | ||
23.5.2 QComboBox | 842 | ||
23.5.3 QDateEdit, QTimeEdit, QDateTimeEdit | 843 | ||
23.5.4 QDialog | 844 | ||
23.5.5 QLineEdit | 845 | ||
23.5.6 QListWidget, QListView | 845 | ||
23.5.7 QProgressBar | 846 | ||
23.5.8 QPushButton | 847 | ||
23.5.9 QRadioButton | 847 | ||
23.5.10 QSlider, QDial | 848 | ||
23.5.11 QTextEdit | 849 | ||
23.5.12 QWidget | 849 | ||
23.6 Zeichenfunktionalität | 851 | ||
23.6.1 Werkzeuge | 852 | ||
23.6.2 Koordinatensystem | 854 | ||
23.6.3 Einfache Formen | 854 | ||
23.6.4 Grafiken | 857 | ||
23.6.5 Text | 858 | ||
23.6.6 Eye-Candy | 860 | ||
23.7 Model-View-Architektur | 864 | ||
23.7.1 Beispielprojekt: Ein Adressbuch | 865 | ||
23.7.2 Auswählen von Einträgen | 875 | ||
23.7.3 Bearbeiten von Einträgen | 876 | ||
Kapitel 24 | 882 | ||
Wissenschaftliches Rechnen | 882 | ||
24.1 Installation | 883 | ||
24.2 Das Modellprogramm | 884 | ||
24.2.1 Der Import von numpy, scipy und matplotlib | 885 | ||
24.2.2 Vektorisierung und der Datentyp numpy.ndarray | 886 | ||
24.2.3 Visualisieren von Daten mit matplotlib.pyplot | 890 | ||
24.3 Überblicke über die Module numpy und scipy | 892 | ||
24.3.1 Überblick über den Datentyp numpy.ndarray | 892 | ||
24.3.2 Überblick über scipy | 900 | ||
Kapitel 25 | 904 | ||
Anbindung an andere Programmiersprachen | 904 | ||
25.1 Dynamisch ladbare Bibliotheken - ctypes | 905 | ||
25.1.1 Ein einfaches Beispiel | 905 | ||
25.1.2 Die eigene Bibliothek | 906 | ||
25.1.3 Schnittstellenbeschreibung | 910 | ||
25.1.4 Verwendung des Moduls | 912 | ||
25.2 Schreiben von Extensions | 915 | ||
25.2.1 Ein einfaches Beispiel | 915 | ||
25.2.2 Exceptions | 919 | ||
25.2.3 Erzeugen der Extension | 920 | ||
25.2.4 Reference Counting | 922 | ||
25.3 Python als eingebettete Scriptsprache | 923 | ||
25.3.1 Ein einfaches Beispiel | 923 | ||
25.3.2 Ein komplexeres Beispiel | 925 | ||
25.3.3 Python-API-Referenz | 928 | ||
Kapitel 26 | 934 | ||
Insiderwissen | 934 | ||
26.1 URLs im Standardbrowser öffnen - webbrowser | 934 | ||
26.2 Funktionsschnittstellen vereinfachen - functools | 935 | ||
26.2.1 Funktionsschnittstellen vereinfachen | 935 | ||
26.2.2 Caches | 936 | ||
26.2.3 Ordnungsrelationen vervollständigen | 938 | ||
26.3 Weitere Datentypen - collections | 939 | ||
26.3.1 Zählen von Häufigkeiten | 939 | ||
26.3.2 Dictionarys mit Standardwerten | 942 | ||
26.3.3 Doppelt verkettete Listen | 943 | ||
26.3.4 Benannte Tupel | 945 | ||
26.3.5 Sortierte Dictionarys | 946 | ||
26.4 Interpretieren von Binärdaten - struct | 947 | ||
26.5 Versteckte Passworteingaben - getpass | 950 | ||
26.6 Kommandozeilen-Interpreter - cmd | 950 | ||
26.7 Dateiinterface für Strings - io.StringIO | 953 | ||
Kapitel 27 | 956 | ||
Von Python 2 nach Python 3 | 956 | ||
27.1 Die wichtigsten Unterschiede | 959 | ||
27.1.1 Ein-/Ausgabe | 959 | ||
27.1.2 Iteratoren | 960 | ||
27.1.3 Strings | 961 | ||
27.1.4 Ganze Zahlen | 962 | ||
27.1.5 Exception Handling | 963 | ||
27.1.6 Standardbibliothek | 963 | ||
27.1.7 Neue Sprachelemente in Python 3 | 964 | ||
27.2 Automatische Konvertierung | 965 | ||
A.1 Reservierte Wörter | 970 | ||
A.2 Built-in Functions | 970 | ||
Index | 974 |