Bernd Klein
Einführung in Python 3
Für Ein- und Umsteiger
Inhalt
6
Vorwort
18
Danksagung
19
1 Einleitung
20
1.1 Einfach und schnell zu lernen
20
1.2 Zielgruppe des Buches
20
1.3 Aufbau des Buches
21
1.4 Programmieren lernen ,,interaktiv''
22
1.5 Download der Beispiele und Hilfe
23
1.6 Anregungen und Kritik
23
Teil I Einführung in Python 3 – Für Ein- und Umsteiger
24
2 Kommandos und Programme
26
2.1 Erste Schritte mit Python
26
2.1.1 Linux
26
2.1.2 Windows
27
2.2 Herkunft und Bedeutung des Begriffes interaktive Shell
28
2.2.1 Erste Schritte in der interaktiven Shell
28
2.3 Verlassen der Python-Shell
30
2.4 Benutzung von Variablen
30
2.5 Mehrzeilige Anweisungen in der interaktiven Shell
31
2.6 Programme schreiben oder schnell mal der Welt ``Hallo'' sagen
31
3 Bytecode und Maschinencode
34
3.1 Einführung
34
3.2 Unterschied zwischen Programmier- und Skriptsprachen
34
3.3 Interpreter- oder Compilersprache
34
4 Datentypen und Variablen
38
4.1 Einführung
38
4.2 Datentypen
40
4.2.1 Ganze Zahlen
40
4.2.2 Fließkommazahlen
41
4.2.3 Zeichenketten
42
4.2.4 Boolesche Werte
42
4.2.5 Komplexe Zahlen
42
4.2.6 Operatoren
43
4.3 Statische und dynamische Typdeklaration
44
4.4 Typumwandlung
46
4.5 Datentyp ermitteln
46
5 Sequentielle Datentypen
48
5.1 Übersicht
48
5.1.1 Zeichenketten oder Strings
48
5.1.2 Listen
50
5.1.3 Tupel
51
5.1.4 Sequenz von Binärdaten
51
5.2 Indizierung von sequentiellen Datentypen
51
5.3 Slicing oder Ausschneiden
52
5.4 Die len-Funktion
54
5.5 Aufgaben
55
6 Dictionaries
58
6.1 Dictionaries und assoziative Felder
58
6.2 Definition und Benutzung
59
6.3 Fehlerfreie Zugriffe auf Dictionaries
61
6.4 Zulässige Typen für Schlüssel und Werte
62
6.5 Verschachtelte Dictionaries
63
6.6 Methoden auf Dictionaries
63
6.7 Operatoren
66
6.8 Die zip-Funktion
67
6.9 Dictionaries aus Listen erzeugen
68
6.10 Aufgaben
69
7 Mengen
72
7.1 Übersicht
72
7.2 Mengen in Python
72
7.2.1 Sets erzeugen
73
7.2.2 Mengen von unveränderlichen Elementen
73
7.3 Frozensets
74
7.4 Operationen auf ,,set''-Objekten
74
7.4.1 add(element)
74
7.4.2 clear()
74
7.4.3 copy
75
7.4.4 difference()
75
7.4.5 difference_update()
76
7.4.6 discard(el)
76
7.4.7 remove(el)
76
7.4.8 intersection(s)
77
7.4.9 isdisjoint()
77
7.4.10 issubset()
77
7.4.11 issuperset()
78
7.4.12 pop()
78
8 Eingaben
80
8.1 Eingabe mittels input
80
9 Verzweigungen
82
9.1 Anweisungsblöcke und Einrückungen
82
9.2 Bedingte Anweisungen in Python
85
9.3 Vergleichsoperatoren
86
9.4 Zusammengesetzte Bedingungen
87
9.5 Wahr oder falsch: Bedingungen in Verzweigungen
87
9.6 Aufgaben
88
10 Schleifen
90
10.1 Übersicht
90
10.2 while-Schleife
91
10.3 break und continue
92
10.4 die Alternative im Erfolgsfall: else
93
10.5 For-Schleife
94
10.6 Aufgaben
97
11 Dateien lesen und schreiben
100
11.1 Dateien
100
11.2 Text aus einer Datei lesen
100
11.3 Schreiben in eine Datei
102
11.4 In einem Rutsch lesen: readlines und read
102
11.5 Aufgaben
103
12 Formatierte Ausgabe und Strings formatieren
106
12.1 Wege, die Ausgabe zu formatieren
106
12.2 Details zur print-Funktion
107
12.2.1 Unterschiede zu Python 2
107
12.2.2 Import aus der Zukunft: print_function
107
12.2.3 print-Funktion in Python 3
108
12.3 Stringformatierung im C-Stil
109
12.4 Der pythonische Weg: Die String-Methode ,,format''
114
12.5 Benutzung von Dictionaries beim Aufruf der ,,format''-Methode
117
12.6 Benutzung von lokalen Variablen in ,,format''
118
12.7 Weitere String-Methoden zum Formatieren
119
13 Flaches und tiefes Kopieren
122
13.1 Einführung
122
13.2 Kopieren einer Liste
123
13.3 Kopie mit Teilbereichsoperator
125
13.4 Kopieren mit deepcopy
126
13.5 Deepcopy für Dictionaries
126
14 Funktionen
128
14.1 Allgemein
128
14.2 Funktionen in Python
128
14.3 Optionale- und Schlüsselwortparameter
130
14.4 Docstring
131
14.5 Rückgabewerte
132
14.6 Mehrere Rückgabewerte
133
14.7 Lokale und globale Variablen in Funktionen
133
14.8 Parameterübergabe im Detail
135
14.9 Effekte bei veränderlichen Objekten
137
14.10 Kommandozeilenparameter
138
14.11 Variable Anzahl von Parametern / Variadische Funktionen
139
14.12 * in Funktionsaufrufen
140
14.13 Beliebige Schlüsselwortparameter
141
14.14 Doppeltes Sternchen im Funktionsaufruf
141
14.15 Aufgaben
142
15 Rekursive Funktionen
144
15.1 Definition und Herkunft des Begriffs
144
15.2 Definition der Rekursion
145
15.3 Rekursive Funktionen in Python
145
15.4 Die Tücken der Rekursion
146
15.5 Fibonacci-Folge in Python
147
15.6 Aufgaben
151
16 Listen und Tupel im Detail
154
16.1 Stapelspeicher
154
16.2 Stapelverarbeitung in Python: pop und append
155
16.3 extend
155
16.4 ,+'-Operator oder append
156
16.5 Entfernen eines Wertes
157
16.6 Prüfen, ob ein Element in Liste enthalten ist
158
16.7 Finden der Position eines Elementes
158
16.8 Einfügen von Elementen
159
16.9 Besonderheiten bei Tupel
159
16.9.1 Leere Tupel
160
16.9.2 1-Tupel
160
16.9.3 Mehrfachzuweisungen, Packing und Unpacking
160
16.10 Die veränderliche Unveränderliche
161
16.11 Sortieren von Listen
162
16.11.1 ,,sort'' und ,,sorted''
162
16.11.2 Umkehrung der Sortierreihenfolge
163
16.11.3 Eigene Sortierfunktionen
163
16.12 Aufgaben
166
17 Modularisierung
168
17.1 Module
168
17.1.1 Namensräume von Modulen
169
17.1.2 Namensräume umbenennen
170
17.1.3 Modularten
170
17.1.4 Suchpfad für Module
171
17.1.5 Inhalt eines Modules
172
17.1.6 Eigene Module
172
17.1.7 Dokumentation für eigene Module
173
17.2 Pakete
174
18 Globale und lokale Variablen
176
18.1 Einführung
176
18.2 Globale und lokale Variablen in Funktionen
176
19 Alles über Strings …
180
19.1 ... fast alles
180
19.2 Aufspalten von Zeichenketten
181
19.2.1 split
181
19.2.2 Standardverhalten und ,,maxsplit''
183
19.2.3 rsplit
184
19.2.4 Folge von Trennzeichen
186
19.2.5 splitlines
187
19.2.6 partition
187
19.3 Zusammenfügen von Stringlisten mit join
188
19.4 Suchen von Teilstrings
188
19.4.1 ,,in'' oder ,,not in''
188
19.4.2 s.find(substring[, start[, end]])
188
19.4.3 s.rfind(substring[, start[, end]])
189
19.4.4 s.index(substring[, start[, end]])
189
19.4.5 s.rindex(substring[, start[, end]])
190
19.4.6 s.count(substring[, start[, end]])
190
19.5 Suchen und Ersetzen
190
19.6 Nur noch Kleinbuchstaben oder Großbuchstaben
191
19.7 capitalize und title
191
19.8 Stripping Strings
192
19.9 Strings ausrichten
192
19.10 String-Tests
193
19.11 Aufgaben
195
20 Ausnahmebehandlung
198
20.1 Abfangen mehrerer Exceptions
200
20.2 except mit mehrfachen Ausnahmen
200
20.3 Die optionale else-Klausel
201
20.4 Fehlerinformationen über sys.exc_info
201
20.5 Exceptions generieren
202
20.6 Finalisierungsaktion
203
21 Objektorientierte Programmierung
204
21.1 Einführung
204
21.2 Klassen in Python
206
21.2.1 Objekte und Instanzen einer Klasse
206
21.2.2 Kapselung von Daten und Methoden
207
21.2.3 Ein minimale Klasse in Python
207
21.2.4 Eigenschaften und Attribute
208
21.3 Methoden
210
21.3.1 Instanzvariablen
210
21.3.2 Die __init__-Methode
212
21.4 Datenkapselung, Datenabstraktion und Geheimnisprinzip
214
21.4.1 Begriffsbestimmungen
214
21.4.2 Die __str__- und die __repr__-Methode
216
21.5 Public-, Protected- und Private-Attribute
220
21.6 Destruktor
224
21.7 Klassenattribute
226
21.8 Statische Methoden
228
21.9 Klassenmethoden
229
21.10 Properties
231
21.11 Public-Attribute statt private Attribute
235
21.12 Vererbung
237
21.12.1 Oberbegriffe und Oberklassen
237
21.12.2 Ein einfaches Beispiel
237
21.12.3 Überladen, Überschreiben und Polymorphie
238
21.12.4 Vererbung in Python
241
21.13 Mehrfachvererbung
244
21.13.1 Einführung
244
21.13.2 Beispiel: CalendarClock
245
21.13.3 Diamand-Problem oder ,,deadly diamond of death''
252
21.13.4 super und MRO
254
21.14 Magische Methoden und Operatorüberladung
258
21.14.1 Einführung
258
21.14.2 Übersicht magische Methoden
259
21.14.3 Beispielklasse: Length
260
21.15 Standardklassen als Basisklassen
263
21.16 Aufgaben
264
Teil II Weiterführende Themen
268
22 Tests und Fehler
270
22.1 Einführung
270
22.2 Modultests
272
22.3 Modultests unter Benutzung von __name__
273
22.4 doctest-Modul
275
22.5 Testgetriebene Entwicklung oder ,,Im Anfang war der Test''
278
22.6 unittest
279
22.7 Methoden der Klasse TestCase
281
22.8 Aufgaben
284
23 Systemprogrammierung
286
23.1 Systemprogrammierung
286
23.2 Häufig falsch verstanden: Shell
286
23.3 os-Modul
287
23.3.1 Vorbemerkungen
287
23.3.2 Umgebungsvariablen
288
23.3.3 Dateiverarbeitung auf niedrigerer Ebene
290
23.3.4 Die exec-,,Familie''
295
23.3.5 Weitere Funktionen im Überblick
301
23.3.6 os.path - Arbeiten mit Pfaden
314
23.4 shutil-Modul
322
24 Forks
328
24.1 Fork
328
24.2 Fork in Python
328
25 Daten konservieren
332
25.1 Persistente Speicherung
332
25.2 Pickle-Modul
333
25.2.1 Daten ,,einpökeln'' mit pickle.dump
333
25.2.2 pickle.load
334
25.3 Ein persistentes Dictionary mit shelve
334
26 Reguläre Ausdrücke
338
26.1 Ursprünge und Verbreitung
338
26.2 Stringvergleiche
338
26.3 Überlappungen und Teilstrings
340
26.4 Das re-Modul
340
26.5 Matching-Problem
341
26.6 Syntax der regulären Ausdrücke
343
26.6.1 Beliebiges Zeichen
343
26.7 Zeichenauswahl
343
26.8 Endliche Automaten
344
26.9 Anfang und Ende eines Strings
345
26.10 Vordefinierte Zeichenklassen
347
26.11 Optionale Teile
349
26.12 Quantoren
349
26.13 Gruppierungen und Rückwärtsreferenzen
352
26.13.1 Match-Objekte
352
26.14 Umfangreiche Übung
354
26.15 Alles finden mit findall
356
26.16 Alternativen
357
26.17 Kompilierung von regulären Ausdrücken
358
26.18 Aufspalten eines Strings mit oder ohne regulären Ausdruck
359
26.18.1 split-Methode der String-Klasse
359
26.18.2 split-Methode des re-Moduls
361
26.18.3 Wörter filtern
362
26.19 Suchen und Ersetzen mit sub
363
26.20 Aufgaben
364
27 lambda, map, filter und reduce
366
27.1 lambda
366
27.2 map
369
27.3 Filtern von sequentiellen Datentypen mittels ,,filter''
371
27.4 reduce
371
27.5 Aufgaben
373
28 Listen-Abstraktion/List Comprehension
374
28.1 Die Alternative zu Lambda und Co.
374
28.2 Syntax
375
28.3 Weitere Beispiele
375
28.4 Die zugrunde liegende Idee
376
28.5 Anspruchsvolleres Beispiel
377
28.6 Mengen-Abstraktion
377
28.7 Rekursive Primzahlberechnung
378
28.8 Generatoren-Abstraktion
378
28.9 Aufgaben
379
29 Generatoren und Iteratoren
380
29.1 Einführung
380
29.2 Iteration in for-Schleifen
380
29.3 Generatoren
382
29.4 Beispiele
386
29.4.1 Permutationen
386
29.4.2 Variationen und Kombinationen
0
29.5 Generatoren zähmen mit firstn und islice
0
29.6 send-Methode
387
29.7 Generator-Ausdrücke
388
29.8 Aufgaben
389
30 Memoisation
390
30.1 Bedeutung und Herkunft des Begriffes
390
30.2 Memoisation mit Dekorateur-Funktionen
391
30.3 Memoize in einer Class
392
30.4 Dekorateure in Python
392
30.5 Überprüfung von Argumenten durch Dekorateure
394
31 NumPy
396
31.1 Übersicht
396
31.2 Arrays in NumPy
398
31.3 Arrays flach machen
400
31.4 Arrays umdimensionieren
402
31.5 Arrays konkatenieren
403
31.6 Array, neue Dimension hinzufügen
405
31.7 Array mit Nullen und Einsen initialisieren
405
31.8 Matrizenarithmetik
406
31.9 Vektoraddition und Vektorsubtraktion
407
31.10 Matrix-Klasse
409
31.10.1 Matrix-Produkt
410
31.10.2 Eine einfache praktische Anwendung
411
31.11 Inverse Matrix
412
31.12 Kreuzprodukt / Vektorprodukt
413
31.13 Lineare Gleichungssysteme
413
31.14 Polynome
415
31.15 Aufgaben
416
Teil III Umfassende Beispiele
418
32 Bruchklasse
420
32.1 Brüche à la 1001 Nacht
420
32.2 Zurück in die Gegenwart
421
32.3 Rechenregeln
424
32.3.1 Multiplikation von Brüchen
424
32.3.2 Division von Brüchen
425
32.3.3 Addition von Brüchen
426
32.3.4 Subtraktion von Brüchen
426
32.4 Integer plus Bruch
427
32.4.1 Die Bruchklasse im Überblick
428
32.5 Die Fraction-Klasse im fractions-Modul
430
33 Mastermind
432
33.1 Die Ursprünge des Spiels
432
33.2 Die Spielregeln
433
33.2.1 ,,Bulls and Cows''
433
33.2.2 Mastermind
433
33.3 Kombinatorikmodul
434
33.4 Mastermind in Python
435
34 Textklassifikation
440
34.1 Einführung in die Textklassifikation
440
34.2 Textklassifikation: Aufgabe
442
34.3 Naive-Bayes-Klassifikator
442
34.3.1 Definition
442
34.3.2 Bayes-Theorem
442
34.4 Formale Herleitung der Naive-Bayes-Klassifikation
443
34.5 Textklassifikation in Python
445
34.5.1 BagOfWords-Klasse
445
34.5.2 Document-Klasse
446
34.5.3 DocumentClass-Klasse
448
34.5.4 Pool-Klasse
449
Teil IV Lösungen zu den Aufgaben
452
35 Lösungen zu den Aufgaben
454
35.1 Lösungen zu Kapitel 5 (Sequentielle Datentypen)
454
35.2 Lösungen zu Kapitel 6 (Dictionaries)
457
35.3 Lösungen zu Kapitel 9 (Verzweigungen)
458
35.4 Lösungen zu Kapitel 10 (Schleifen)
461
35.5 Lösungen zu Kapitel 11 (Dateien lesen und schreiben)
464
35.6 Lösungen zu Kapitel 16 (Listen und Tupel im Detail)
465
35.7 Lösungen zu Kapitel 14 (Funktionen)
468
35.8 Lösungen zu Kapitel 15 (Rekursive Funktionen)
472
35.9 Lösungen zu Kapitel 19 (Alles über Strings …)
476
35.10 Lösungen zu Kapitel 21 (Objektorientierte Programmierung)
479
35.11 Lösungen zu Kapitel 22 (Tests und Fehler)
487
35.12 Lösungen zu Kapitel 26 (Reguläre Ausdrücke)
487
35.13 Lösungen zu Kapitel 27 (lambda, map, filter und reduce)
493
35.14 Lösungen zu Kapitel 28 (Listen-Abstraktion/List Comprehension)
494
35.15 Lösungen zu Kapitel 29 (Generatoren und Iteratoren)
495
35.16 Lösungen zu Kapitel 31 (NumPy)
498
Stichwortverzeichnis
500
© 2009-2024 ciando GmbH