Einführung in Python 3 - Für Ein- und Umsteiger

Bernd Klein

Einführung in Python 3

Für Ein- und Umsteiger

2014

512 Seiten

Format: PDF, Online Lesen

E-Book: €  19,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446441514

 

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