Auf einen Blick

Werbung
Auf einen Blick
Auf einen Blick
Teil I Einstieg in Python
1
2
3
4
5
6
7
8
9
Überblick über Python
Die Arbeit mit Python
Der interaktive Modus
Grundlegendes zu Python-Programmen
Kontrollstrukturen
Das Laufzeitmodell
Basisdatentypen
Dateien
Funktionen
Teil II
10
12
13
14
15
17
18
19
20
Ernesti, Johannes
Python 3
2012
257
269
329
Die Standardbibliothek
Mathematik
Strings
Datum und Zeit
Schnittstelle zum Betriebssystem
Parallele Programmierung
Datenspeicherung
Netzwerkkommunikation
Debugging
Teil IV
21
22
23
24
25
26
27
Fortgeschrittene Programmiertechniken
Modularisierung
Objektorientierung
Weitere Spracheigenschaften
Teil III
27
31
39
51
59
75
87
197
209
385
415
451
481
525
549
607
691
Themen
Distribution von Python-Projekten
Optimierung
Grafische Benutzeroberflächen
Wissenschaftliches Rechnen
an andere Programmiersprachen
Insiderwissen
Von Python 2 nach Python 3
739
753
759
881
903
933
955
digitalisiert durch:
IDS Basel Bern
Impressum
Der Name Galileo Press geht auf den italienischen Mathematiker und Philosophen
Galileo Galilei (1564
zurück. Er gilt als Gründungsfigur der neuzeitlichen Wissenschaft und wurde berühmt als Verfechter des modernen, heliozentrischen Weltbilds.
Legendär ist sein Ausspruch
si
(Und sie bewegt sich doch). Das Emblem
von Galileo Press ist der Jupiter, umkreist von den vier
Monden. Galilei entdeckte die nach ihm benannten Monde 1610.
Lektorat Anne Scheibe
Korrektorat Monika Paff, Langenfeld
Einbandgestaltung Barbara Thoben, Köln
Titelbilder Labyrint: ©csld-fotolia.com, Mann:
Typografie und Layout Vera Brauner
Herstellung Katrin Müller
Satz III-satz, Husby
Druck und Bindung
Druckpartner, Hemsbach
Gerne stehen wir
mit Rat und Tat zur Seite:
[email protected]
bei Fragen und Anmerkungen zum Inhalt des Buches
[email protected]
für versandkostenfreie Bestellungen und Reklamationen
[email protected]
für Rezensions- und Schulungsexemplare
Dieses Buch wurde gesetzt aus der TheAntiquaB (9,35/13,7 pt) in
Bibliograflsche Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen
Nationalbibliografie; detaillierte bibliograflsche Daten sind im Internet über
http://dnb.d-nb.de abrufbar.
ISBN 978-3-8362-1925-9
© Galileo Press, Bonn 2012
3., aktualisierte und erweiterte Auflage 2012
Das vorliegende Werk ist in all seinen Teilen urheberrechtlich geschützt. Alle Rechte vorbehalten, insbesondere das Recht der
des Vortrags, der Reproduktion, der Vervielfältigung auf fotomechanischem oder anderen Wegen und der Speicherung in
elektronischen Medien. Ungeachtet der Sorgfalt, die auf die Erstellung von Text, Abbildungen und Programmen verwendet wurde,
können weder Verlag noch Autor, Herausgeber oder
für mögliche Fehler und deren Folgen eine juristische Verantwortung oder irgendeine Haftung übernehmen. Die in diesem Werk wiedergegebenen Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. können auch ohne besondere Kennzeichnung Marken sein und als solche den gesetzlichen Bestimmungen
Inhalt
Inhalt
Über dieses Buch
19
Teil I Einstieg in Python
1
Überblick über Python
27
1.1
Geschichte und Entstehung
27
1.2
Grundlegende Konzepte
28
1.3
Einsatzmöglichkeiten und Stärken
29
1.4
Einsatzbeispiele
30
2
Die Arbeit mit Python
31
2.1
2.2
Die Verwendung von Python
31
2.1.1
2.1.2
2.1.3
33
33
33
Windows
Linux
Mac OS X
Tippen, kompilieren, testen
34
2.2.1
2.2.2
Shebang
Interne Abläufe
35
36
3
Der interaktive Modus
39
3.1
Ganze Zahlen
40
3.2
Gleitkommazahlen
41
3.3
Zeichenketten
42
3.4
Listen
43
3.5
Variablen
43
3.6
Logische Ausdrücke
45
3.7
Funktionen und Methoden
47
Inhalt
3.7.1
3.7.2
Funktionen
Methoden
47
48
3.8
Bildschirmausgaben
49
4
Grundlegendes zu Python-Programmen
51
4.1
Grundstruktur eines Python-Programms
51
4.2
Das erste Programm
53
4.3
Kommentare
55
4.4
Der Fehlerfall
56
5
Kontrollstrukturen
59
5.1
Fallunterscheidungen
59
5.1.1
5.1.2
60
63
5.2
Die
Conditional Expressions
Schleifen
5.2.1
5.2.2
5.2.3
5.2.4
5.2.5
5.2.6
64
Die
Vorzeitiger Abbruch einer Schleife
Erkennen eines Schleifenabbruchs
Vorzeitiger Abbruch eines Schleifendurchlaufs
Die
Die for-Schleife als Zählschleife
65
65
66
68
70
71
5.3
Die pass-Anweisung
73
6
Das Laufzeitmodell
75
6.1
Die Struktur von Instanzen
77
6.1.1
6.1.2
6.1.3
77
78
80
Datentyp
Wert
Identität
6.2
Referenzen und Instanzen freigeben
81
6.3
vs. immutable Datentypen
82
6.3.1
Mutable Datentypen und Seiteneffekte
84
Inhalt
7
Basisdatentypen
7.1
Operatoren
88
7.2
Das Nichts - NoneType
92
7.3
Numerische Datentypen
93
7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
7.3.7
7.4
7.5
7.6
7.7
Arithmetische Operatoren
Vergleichende Operatoren
Konvertierung zwischen numerischen Datentypen
Ganzzahlen - int
Gleitkommazahlen
Boolesche WerteKomplexe Zahlen -complex
93
95
96
96
102
104
110
Parameter von Funktionen und Methoden
113
7.4.1
7.4.2
113
114
Wiederholung
Parameter
Sequentielle Datentypen
115
7.5.1
7.5.2
7.5.3
7.5.4
118
128
139
142
Operationen auf Instanzen sequentieller Datentypen
Listen Unveränderliche
Strings - str, bytes, bytearray
Mappings
173
7.6.1
174
Dictionary - dict
Mengen
7.7.1
7.7.2
7.7.3
185
Die Datentypen set und frozenset
Veränderliche Mengen - set
Unveränderliche
185
193
195
8
Dateien
197
8.1
Datenströme
197
8.2
Daten aus einer Datei auslesen
198
8.3
Daten in eine Datei schreiben
202
8.4
Verwendung des Dateiobjekts
204
Inhalt
9
Funktionen
209
9.1
Schreiben einer Funktion
211
9.2
Funktionsparameter
215
9.2.1
9.2.2
9.2.3
9.2.4
9.2.5
Optionale Parameter
Schlüsselwortparameter
Beliebige
von Parametern
Reine Schlüsselwortparameter
Entpacken einer Parameterliste
215
216
217
219
221
9.2.6
Seiteneffekte
222
9.3
Namensräume
225
9.3.1
9.3.2
9.3.3
225
226
227
Zugriff auf globale
Zugriff auf den globalen Namensraum
Zugriff auf übergeordnete Namensräume- nonlocal
9.4
Lokale Funktionen
229
9.5
Anonyme Funktionen
230
9.6
Rekursion
231
9.7
Eingebaute Funktionen
231
Teil
Fortgeschrittene Programmiertechniken
10
Modularisierung
257
10.1
Einbinden globaler Module
257
10.2
Lokale Module
260
10.2.1
10.2.2
261
262
10.3
Pakete
10.3.1
10.3.2
10.4
Namenskonflikte
Modulinterne Referenzen
262
Absolute und relative Import-Anweisungen
Importieren aller Module eines Pakets
Functions
265
266
267
Inhalt
11
Objektorientierung
269
11.1
Klassen
11.1.1
Definieren von Methoden
11.1.2
Der Konstruktor und die Erzeugung von Attributen
274
276
277
11.2
Vererbung
11.2.1
Technische Grundlagen
11.2.2
Die Klasse
11.2.3
Beispiele möglicher Erweiterungen
11.2.4
Ausblick
11.2.5
Mehrfachvererbung
280
281
283
289
293
294
11.3
Setter und Getter und Property Attributes
295
11.4
Klassenattribute und Klassenmethoden sowie statische Methoden
298
11.5
Magic Methods und Magic Attributes
302
11.5.1
11.5.2
11.5.3
11.5.4
Allgemeine Magic Methods
Zugriff auf Attribute anpassen
Operatoren überladen
Datentypen emulieren
302
306
309
317
Functions für Objektorientierung
322
11.6
11.6.1
11.6.2
Funktionen für die Verwaltung der Attribute einer Instanz
Funktionen für Informationen über die Klassenhierarchie
323
324
11.7
Objektphilosophie
326
12
Weitere Spracheigenschaften
329
12.1
Exception
329
12.1.1
Eingebaute Exceptions
330
12.1.2
Werfen einer Exception
334
12.1.3
12.1.4
12.1.5
12.1.6
Abfangen einer Exception
Eigene Exceptions
Erneutes Werfen einer Exception
Exception Chaining
335
340
342
344
12.2
Comprehensions
346
12.2.1
12.2.2
12.2.3
346
348
349
List Comprehensions
Dict Comprehensions
Set Comprehensions
Inhalt
12.3
Generatoren
349
12.4
Iteratoren
353
12.5
Docstrings
363
12.6
Interpreter im Interpreter
365
12.7
Die with-Anweisung
368
12.8
Function Annotations
371
12.9
Function Decorator
373
12.10
assert
377
12.11 Weitere Aspekte der Syntax
12.11.1 Umbrechen langer Zeilen
12.11.2 Zusammenfügen mehrerer Zeilen
378
378
379
12.12
380
Teil III
Geplante Sprachelemente
Die Standardbibliothek
13
Mathematik
13.1
Mathematische Funktionen 13.1.1
13.1.2
13.1.3
13.1.4
13.2
13.3
13.4
cmath
Zahlentheoretische Funktionen
Exponential- und Logarithmusfunktionen
Trigonometrische Funktionen
Funktionen aus cmath
385
389
391
392
394
Zufallszahlengenerator -
394
13.2.1
13.2.2
13.2.3
13.2.4
396
397
398
399
Steuerungsfunktionen
Funktionen für ganze Zahlen
Funktionen für Sequenzen
Alternative Generatoren
Präzise Dezimalzahlen
399
13.3.1
13.3.2
13.3.3
400
403
404
Verwendung des Datentyps
Nichtnumerische Werte
Das Context-Objekt
Spezielle Generatoren - itertools
405
Inhalt
14
Strings
415
14.1
Reguläre Ausdrücke - re
415
14.1.1
14.1.2
14.1.3
14.1.4
416
427
438
439
14.2
Syntax regulärer Ausdrücke
Verwendung des Moduls re
Ein einfaches Beispielprogramm - Searching
Ein komplexeres
Lokalisierung von Programmen - gettext
442
14.2.1
443
Beispiel
die Verwendung von gettext
14.3
Hash-Funktionen - hashlib
14.3.1
Verwendung des Moduls
14.3.2
Beispiel
446
448
450
15
Datum und Zeit
451
15.1
Elementare Zeitfunktionen -
451
15.2
Komfortable
15.2.1
15.2.2
15.2.3
15.2.4
15.2.5
-
Attribute und Datentypen (Übersicht)
date
460
460
461
466
468
477
16
Schnittstelle zum Betriebssystem
16.1
Funktionen des Betriebssystems - os
16.1.1
Zugriff auf den eigenen Prozess und andere Prozesse
16.1.2
Zugriff auf das Dateisystem
481
482
484
16.2
Umgang mit Pfaden - os.path
490
16.3
Zugriff auf das
16.3.1
16.3.2
16.4
shutil
Verzeichnis- und Dateioperationen
Archivoperationen
495
497
499
Zugriff auf die Laufzeitumgebung - sys
501
16.4.1
16.4.2
503
506
Konstanten
Exceptions
Inhalt
16.4.3
Hooks
507
16.4.4
Sonstige Funktionen
509
16.5
Informationen über das System -
511
16.6
Kommandozeilenparameter - argparse
16.6.1
einfaches Beispiel
512
513
16.6.2
518
Komplexeres Beispiel
16.7
Kopieren von Instanzen - copy
519
16.8
Das Programmende - atexit
523
17
Parallele Programmierung
525
17.1
Prozesse, Multitasking und Threads
525
17.2
Die Thread-Unterstützung in Python
528
17.3
Das Modul
528
17.3.1
17.3.2
17.3.3
17.4
Ein Beispiel für eine rechenintensive Funktion die Approximation von Pi
Parallele Berechnung
von Threads
Datenaustausch zwischen
528
529
531
Das Modul threading
536
17.4.1
17.4.2
17.4.3
17.4.4
17.4.5
539
542
546
546
546
Locking
Worker-Threads und Queues
Ereignisse
Barrieren
Eine Funktion zeitlich versetzt ausführen
18
Datenspeicherung
549
18.1
Komprimierte Dateien lesen und schreiben - gzip
549
18.2
XML
551
18.2.1
18.2.2
18.2.3
18.3
12
Model
SAX - Simple API for XML
553
565
570
Datenbanken
575
18.3.1
Beispieldatenbank
577
18.3.2
Pythons eingebaute Datenbank - sqlite3
579
Inhalt
18.4
von Instanzen - pickle
595
18.5
Das Tabellenformat CSV - csv
599
18.6
Temporäre Dateien -
604
19
Netzwerkkommunikation
607
19.1
Socket API
609
19.1.1
19.1.2
Client-Server-Systeme
UDP
610
612
19.1.3
TCP
614
19.1.4
19.1.5
19.1.6
19.1.7
19.1.8
19.1.9
Blockierende und
Verwendung des Moduls
Die Socket-Klasse
Netzwerk-Byte-Order
Multiplexende Server - select
socketserver
19.2
URLs
19.2.1
19.2.2
Zugriff auf Ressourcen im
Verarbeiten einer URL-
Sockets
616
618
621
625
627
630
634
634
640
19.3
FTP - ftplib
646
19.4
E-Mail
655
19.4.1
19.4.2
19.4.3
19.4.4
SMTP - poplib
IMAP4Erstellen komplexer
655
660
665
671
19.5
Telnet - telnetlib
676
19.6
XML-RPC
19.6.1
Der Server
19.6.2
Der Client
19.6.3
Multicall
19.6.4
Einschränkungen
680
680
685
687
688
20.1
Der Debugger
691
20.2
Inspizieren von Instanzen - inspect
694
20
13
Inhalt
20.2.1
Datentypen, Attribute und Methoden
696
20.2.2
20.2.3
Quellcode
Klassen und Funktionen
697
699
20.3
Formatierte Ausgabe von Instanzen - pprint
703
20.4
Logdateien - logging
20.4.1
Das Meldungsformat anpassen
20.4.2
Logging
706
709
711
20.5
Automatisiertes Testen
20.5.1
Testfälle in Docstrings-doctest
20.5.2
Unit Tests - unittest
713
713
718
20.6
Traceback-Objekte - traceback
722
20.7
Analyse des Laufzeitverhaltens
726
20.7.1
20.7.2
20.7.3
727
730
734
Teil IV
Profiling - cProfile
Weiterführende Themen
21
Distribution von Python-Projekten
739
21.1
Erstellen von Distributionen - distutils
739
21.1.1
21.1.2
21.1.3
21.1.4
21.1.5
740
742
746
748
749
Schreiben des Moduls
Das Installationsscript
Erstellen einer Quellcodedistribution
Erstellen einer Binärdistribution
Distributionen installieren
21.2
Erstellen von
22
Optimierung
753
22.1
Die Optimize-Option
754
22.2
Mutable vs. immutable
754
22.3
Schleifen
755
22.4
Funktionsaufrufe
756
14
Freeze
750
Inhalt
22.5
C
756
22.6
Lookup
757
22.7
Exceptions
757
22.8
Keyword Arguments
758
23
Grafische Benutzeroberflächen
759
23.1
Toolkits
759
23.2
23.3
23.1.1
Tkinter
760
23.1.2
23.1.3
23.1.4
23.1.5
PyGObject
PyQt
PySide
wxPython
760
760
761
761
Einführung in tkinter
762
23.2.1
23.2.2
23.2.3
23.2.4
23.2.5
23.2.6
23.2.7
762
764
767
771
779
817
818
Ein einfaches Beispiel
Steuerelementvariablen
Der Packer
Events
Die Steuerelemente
Die
Tk
Weitere Module
Einführung in PyQt
826
23.3.1
23.3.2
23.3.3
826
827
829
Installation
Grundlegende Konzepte von Qt
Entwicklungsprozess
23.4
Signale und Slots
836
23.5
Wichtige Widgets
839
23.5.1
23.5.2
23.5.3
23.5.4
23.5.5
23.5.6
23.5.7
23.5.8
23.5.9
23.5.10
840
841
842
843
844
844
845
846
846
847
QCheckBox
QDateEdit,
QDialog
QLineEdit
QListWidget, QListView
QProgressBar
QPushButton
QRadioButton
QSIider,
Inhalt
23.5.11
23.5.12
23.6
23.7
QTextEdit
QWidget
848
848
Zeichenfunktionalität
850
23.6.1
23.6.2
23.6.3
23.6.4
Werkzeuge
Koordinatensystem
Einfache Formen
Grafiken
851
853
853
856
23.6.5
Text
857
23.6.6
Eye-Candy
859
Model-View-Architektur
863
23.7.1
Beispielprojekt: Ein Adressbuch
864
23.7.2
23.7.3
Auswählen von Einträgen
Bearbeiten von Einträgen
874
875
24
Wissenschaftliches Rechnen
24.1
Installation
882
24.2
Das Modellprogramm
883
24.2.1
24.2.2
24.2.3
884
885
889
24.3
Der Import von
scipy und
Vektorisierung und der Datentyp
Visualisieren von Daten mit matplotlib.pyplot
Überblicke über die Module numpy und scipy
891
24.3.1
24.3.2
891
899
Überblick den
Datentyp numpy.ndarray
Überblick über scipy
25
Anbindung an andere Programmiersprachen
903
25.1
Dynamisch ladbare Bibliotheken - ctypes
904
25.1.1
Ein einfaches Beispiel
904
25.1.2
Die eigene Bibliothek
905
25.1.3
25.1.4
Schnittstellenbeschreibung
Verwendung des Moduls
909
911
25.2
16
Schreiben von Extensions
914
25.2.1
25.2.2
25.2.3
25.2.4
914
918
919
921
Ein einfaches Beispiel
Exceptions
Erzeugen der Extension
Reference Counting
Inhalt
25.3
Python als eingebettete Scriptsprache
922
25.3.1
25.3.2
25.3.3
922
924
927
Ein einfaches Beispiel
Ein komplexeres Beispiel
Python-API-Referenz
26
Insiderwissen
26.1
URLs im Standardbrowser öffnen - webbrowser
933
26.2
Funktionsschnittstellen vereinfachen -functools
26.2.1
Funktionsschnittstellen vereinfachen
26.2.2
Caches
26.2.3
Ordnungsrelationen vervollständigen
934
934
935
937
26.3
Weitere Datentypen - collections
938
26.3.1
26.3.2
26.3.3
26.3.4
26.3.5
938
941
942
944
945
Zählen von Häufigkeiten
Dictionarys mit Standardwerten
Doppelt verkettete Listen
Benannte
Sortierte Dictionarys
933
26.4
Interpretieren von Binärdaten - struct
946
26.5
Versteckte Passworteingaben - getpass
949
26.6
Kommandozeilen-Interpreter - cmd
949
26.7
Dateiinterface für Strings -
952
27
Von Python 2 nach Python 3
955
27.1
Die wichtigsten Unterschiede
958
27.1.1
27.1.2
27.1.3
27.1.4
27.1.5
27.1.6
27.1.7
958
959
960
961
962
962
963
27.2
Ein-/Ausgabe
Iteratoren
Strings
Ganze Zahlen
Exception Handling
Standardbibliothek
Neue Sprachelemente in Python 3
Automatische Konvertierung
964
Inhalt
Anhang
969
A.1
969
A.2
Reservierte Wörter
Functions
969
973
18
Herunterladen