Python

Werbung
Johannes Ernesti, Peter Kaiser
Python
Das umfassende Handbuch
Galileo Press
Inhalt
Teil I
1.1
1.2
1.3
1.4
1.5
Warum haben wir dieses Buch geschrieben?
Was leistet dieses Buch und was nicht?
Wie ist dieses Buch aufgebaut?
Wer sollte dieses Buch wie lesen?
Danksagung
21
22
23
24
25
2.1
2.2
2.3
2.4
Geschichte und Entstehung
Grundlegende Konzepte
Einsatzmöglichkeiten und Stärken
Aktuelle Einsatzgebiete
27
28
29
30
3.1
Die Verwendung von Python
3.1.1
Windows
3.1.2
Linux
3.1.3
MacOS X
Tippen, kompilieren, testen
3.2.1
Shebang
3.2.2
Interne Abläufe
31
33
33
33
34
35
36
Ganze Zahlen
Gleitkommazahlen
Zeichenketten
Variablen
Logische Ausdrücke
Bildschirmausgaben
40
41
41
42
44
45
3.2
4.1
4.2
4.3
4.4
4.5
4.6
7
Inhalt
5.1
Grundstruktur eines Python-Programms
47
5.2
Das erste Programm
49
5.3
Kommentare
51
5.4
Der Fehlerfall
52
6.1
6.2
6.3
Fallunterscheidungen
55
6.1.1
If, elif, eise
55
6.1.2
Conditional expressions
Schleifen
6.2.1
While-Schleife
60
6.2.2
Vorzeitiger A b b r u c h einer Schleife
62
6.2.3
Vorzeitiger Abbruch eines Schleifendurchlaufs
63
6.2.4
For-Schleife
64
Die pass-Anweisung
68
7.1
Die Struktur von Instanzen
71
7.2
Referenzen und Instanzen freigeben
75
7.3
M u t a b l e vs. immutable Datentypen
77
8.1
Operatoren
79
8.2
Das N i c h t s - NoneType
81
8.3
Numerische Datentypen
82
8.3.1
Ganzzahlen - int, long
85
8.3.2
Gleitkommazahlen - f l o a t
90
8.3.3
Boolesche W e r t e - bool
92
8.3.4
Komplexe Zahlen - complex
97
8.4
M e t h o d e n und Parameter
100
8.5
Sequenzielle Datentypen
102
8.6
8.5.1
Listen - list
110
8.5.2
Unveränderliche L i s t e n - t u p l e
120
8.5.3
Strings — str, unicode
Mappings
8.6.1
8
59
60
122
145
Dictionary - dict
146
Inhalt
8.7
Mengen
8.7.1
Mengen-set
8.7.2
Unveränderliche Mengen-frozenset
155
161
163
9.1
9.2
9.3
Bildschirmausgaben
Tastatureingaben
Dateien
9.3.1
Datenströme
9.3.2
Daten aus einer Datei auslesen
9.3.3
Daten in eine Datei schreiben
9.3.4
Verwendung des Dateiobjekts
165
166
168
168
169
172
174
10.1
10.2
Schreiben einer Funktion
Funktionsparameter
10.2.1
Optionale Parameter
10.2.2
Schlüsselwortparameter
10.2.3
Beliebige Anzahl von Parametern
10.2.4
Seiteneffekte
Zugriff auf globale Variablen
Lokale Funktionen
Anonyme Funktionen
Rekursion
Vordefinierte Funktionen
179
183
183
184
185
188
191
193
193
194
195
Einbinden externer Programmbibliotheken
Eigene Module
11.2.1
Modulinterne Referenzen
Pakete
11.3.1
Importieren aller Module eines Pakets
11.3.2
Relative Importanweisungen
Built-in Functions
217
219
221
221
224
224
226
10.3
10.4
10.5
10.6
10.7
Teil II
11.1
11.2
11.3
11.4
9
Inhalt
12.1
12.2
12.3
12.4
13.1
Klassen
12.1.1
12.1.2
Definieren von Methoden
Konstruktor, Destruktor und die Erzeugung von
Attributen
12.1.3
Private Member
12.1.4 Versteckte Setter und Getter
12.1.5
Statische Member
Vererbung
12.2.1
Mehrfachvererbung
Magic Members
12.3.1 Allgemeine Magic Members
12.3.2
Datentypen emulieren
Objektphilosophie
Exception Handling
13.1.1
Eingebaute Exceptions
13.1.2
Werfen einer Exception
13.1.3
Abfangen einer Exception
13.1.4
Eigene Exceptions
13.1.5
Erneutes Werfen einer Exception
13.2 List Comprehensions
13.3 Docstrings
13.4 Generatoren
13.5 Iteratoren
13.6 Interpreter im Interpreter
13.7 Geplante Sprachelemente
13.8 Die with-Anweisung
13.9 Function Decorator
13.10 assert
13.11 Weitere Aspekte der Syntax
13.11.1 Umbrechen langer Zeilen
13.11.2 Zusammenfügen mehrerer Zeilen
13.11.3 String conversions
10
234
236
237
240
244
246
249
253
257
257
264
271
273
274
277
278
283
284
287
289
290
296
304
306
307
310
313
314
314
315
316
Inhalt
Teil III
14.1
14.2
14.3
Mathematische Funktionen - math, cmath
Zufallszahlengenerator-random
Präzise Dezimalzahlen - decimal
14.3.1
Verwendung des Datentyps
14.3.2
Nichtnumerische Werte
14.3.3
Das Context-Objekt
319
325
331
332
334
335
15.1
Arbeiten mit Zeichenketten - string
15.1.1
Ein einfaches Template-System
Reguläre Ausdrücke - re
15.2.1
Syntax regulärer Ausdrücke
15.2.2
Verwendung des Moduls
15.2.3
Ein einfaches Beispielprogramm - Searching
15.2.4
Ein komplexeres Beispielprogramm - Matching
Lokalisierung von Programmen-gettext
15.3.1
Beispiel für die Verwendung von gettext
Hash-Funktionen - hashlib
15.4.1 Verwendung des Moduls
15.4.2
Beispiel
Dateiinterface für Strings - StringIO
337
339
340
341
352
361
362
365
366
369
371
372
373
16.1
16.2
Elementare Zeitfunktionen - t i m e
Komfortable Datumsfunktionen - datetime
16.2.1
datetime.date
16.2.2
datetime.time
16.2.3
datetime.datetime
375
381
383
386
389
17.1
Funktionen des Betriebssystems - os
395
17.1.1
Zugriff auf den eigenen Prozess und andere Prozesse .... 396
17.1.2
Zugriff auf das Dateisystem
397
Umgang mit Pfaden - os.path
403
15.2
15.3
15.4
15.5
17.2
11
Inhalt
17.3
Zugriffauf die Laufzeitumgebung-sys
17.3.1
Konstanten
17.3.2
Exceptions
17.3.3
Hooks
17.3.4 Sonstige Funktionen
17.4 Informationen über das System - platform
17.4.1
Funktionen
17.5 Kommandozeilenparameter-optparse
17.5.1 Taschenrechner-ein einfaches Beispiel
17.5.2
Weitere Verwendungsmöglichkeiten
17.6 Kopieren von Instanzen - copy
17.7 Zugriff auf das Dateisystem - shutil
17.8 Das Programmende-atexit
407
408
410
411
413
414
415
415
416
418
420
423
425
18.1
18.2
18.3
Prozesse, Multitasking und Threads
Die Thread-Unterstützung in Python
Das Modul thread
18.3.1
Datenaustausch zwischen Threads - locking
Das Modul threading
18.4.1
Locking im threading-Modul
18.4.2
Worker-Threads und Queues
18.4.3
Ereignisse definieren-threading.Event
18.4.4
Eine Funktion zeitlich versetzt ausführen threading.Timer
427
430
430
432
437
439
443
446
19.1
Komprimierte Dateien lesen und schreiben - gzip
449
19.2
XML
451
19.2.1
D O M - Document Object Model
19.2.2
SAX-Simple API for XML
19.2.3
ElementTree
Datenbanken
19.3.1
Pythons eingebaute Datenbank-sqlite3
19.3.2
MySQLdb
Serialisierung von Instanzen - pickle
Das Tabellenformat CSV - csv
Temporäre Dateien -tempfile
453
464
469
473
477
492
494
498
503
18.4
19.3
19.4
19.5
19.6
12
446
Inhalt
20.1
20.2
20.3
20.4
20.5
20.6
20.7
21.1
21.2
21.3
21.4
21.5
Socket API
20.1.1
Client/Server-Systeme
20.1.2
UDP
20.1.3
TCP
20.1.4
Blockierende und nicht-blockierende Sockets
20.1.5
Verwendung des Moduls
20.1.6
Netzwerk-Byte-Order
20.1.7
AAultiplexende Server-select
20.1.8
SocketServer
Zugriff auf Ressourcen im Internet-urllib
20.2.1
Verwendung des Moduls
Einlesen einer URL-urlparse
FTP-ftplib
E-Mail
20.5.1
SMTP-smtplib
20.5.2
POP3-poplib
20.5.3
IMAP4-imaplib
20.5.4
Erstellen komplexer E-Mails- email
Telnet-telnetlib
XML-RPC
20.7.1
DerServer
20.7.2
Der Client
507
508
510
512
515
516
521
522
525
529
529
534
537
544
545
548
553
559
564
567
568
571
20.7.3
Multicall
574
20.7.4
Einschränkungen
575
Der Debugger
Inspizieren von Instanzen - inspect
21.2.1
Datentypen, Attribute und Methoden
21.2.2
Quellcode
21.2.3
Klassen und Funktionen
Formatierte Ausgabe von Instanzen - pprint
Logdateien - logging
21.4.1
Das Meldungsformat anpassen
21.4.2
Logging Handler
Automatisiertes Testen
21.5.1
Testfälle in Docstrings - doctest
21.5.2
Unit Tests - unittest
579
582
583
584
586
590
592
594
596
598
598
602
13
Inhalt
21.6
Traceback-Objekte - traceback
606
21.7
Analyse des Laufzeitverhaltens
21.7.1
Laufzeitmessung-timeit
21.7.2
Profiling-cProfile
609
609
612
21.7.3
616
Tracing-trace
Teil IV
22.1
Erstellen von Distributionen - distutils
22.1.1
Schreiben des Moduls
22.1.2
Das Installationsscript
22.1.3
Erstellen einer Quellcodedistribution
22.1.4
Erstellen einer Binärdistribution
22.1.5
Beispiel für die Verwendung einer Distribution
Erstellen von EXE-Dateien - py2exe
Automatisches Erstellen einer Dokumentation - epydoc
22.3.1
Docstrings und ihre Formatierung für epydoc
621
623
624
628
629
630
631
633
635
23.1
23.2
23.3
23.4
Die Optimize-Option
Strings
Funktionsaufrufe
Schleifen
642
642
644
644
23.5
C
645
23.6
23.7
23.8
23.9
Lookup
Lokale Referenzen
Exceptions
Keyword arguments
645
646
647
647
24.1
Toolkits
649
24.2
Einführung in PyQt
651
22.2
22.3
24.2.1
24.3
14
Installation
24.2.2
Grundlegende Konzepte von Qt
Entwicklungsprozess
24.3.1
Erstellen des Dialogs
24.3.2
Schreiben des Programms
651
652
655
655
663
Inhalt
24.4
24.5
24.6
24.7
24.8
Signale und Slots
Überblick über das Qt-Framework
Zeichenfunktionalität
24.6.1
Werkzeuge
24.6.2
Koordinatensystem
24.6.3
Einfache Formen
24.6.4
Grafiken
665
668
670
670
672
673
676
24.6.5
24.6.6
677
679
Text
Eye-Candy
Model-View-Architektur
24.7.1
Beispielprojekt: Ein Adressbuch
24.7.2
Auswählen von Einträgen
24.7.3
Editieren von Einträgen
Wichtige Widgets
24.8.1
QCheckBox
24.8.2
QComboBox
24.8.3
QDateEdit
24.8.4
QDateTimeEdit
24.8.5
QDial
24.8.6
QDialog
24.8.7
QGLWidget
24.8.8
QLineEdit
24.8.9
QListView
24.8.10 QListWidget
24.8.11 QProgressBar
24.8.12 QPushButton
24.8.13 QRadioButton
24.8.14 QScrollArea
24.8.15 QSIider
24.8.16 QTableView
24.8.17 QTableWidget
24.8.18 QTabWidget
24.8.19 QTextEdit
24.8.20 QTimeEdit
24.8.21 QTreeView
24.8.22 QTreeWidget
24.8.23 QWidget
683
684
695
696
700
700
701
702
703
704
704
705
706
707
707
708
709
709
710
711
711
712
713
713
714
715
715
716
15
Inhalt
25.1
Installation
720
25.2
Konzepte und Besonderheiten im Überblick
723
25.3
Erstellen eines neuen Django-Projekts
724
25.4
Erstellung der A p p l i k a t i o n
727
25.5
Djangos Administrationsoberfläche
736
25.6
Unser Projekt w i r d öffentlich
740
25.7
Djangos Template-System
747
25.8
Verarbeitung von Formulardaten
757
26.1
26.2
26.3
16
Dynamisch ladbare Bibliotheken - ctypes
762
26.1.1
Ein einfaches Beispiel
762
26.1.2
Die eigene Bibliothek
763
26.1.3
Schnittstellenbeschreibung
767
26.1.4
V e r w e n d u n g des M o d u l s
768
Schreiben von Extensions
769
26.2.1
Ein einfaches Beispiel
770
26.2.2
Exceptions
773
26.2.3
Erzeugen der Extension
774
26.2.4
Reference Counting
776
Python als eingebettete Skriptsprache
777
26.3.1
Ein einfaches Beispiel
778
26.3.2
Ein komplexeres Beispiel
779
26.3.3
Python-API-Referenz
782
27.1
Dateien direkt mit einem bestimmten Encoding lesen
787
27.2
URLs im Standardbrowser ö f f n e n - w e b b r o w s e r
788
27.3
Funktionsschnittstellen v e r e i n f a c h e n - f u n c t o o l s
789
27.4
Versteckte Passworteingaben - getpass
790
27.5
Kommandozeilen-Interpreter-cmd
791
28.1
Python 3000
795
28.2
Python 2.6
796
Inhalt
A.1
A.2
A.3
A.4
A.5
Index
Entwicklungsumgebungen
A.1.1
Eclipse
A.1.2
Eric4
A.1.3
KomodolDE
A.1.4
WingIDE
Reservierte Wörter
Operatorrangfolge
Built-in Exceptions
Built-in Functions
799
799
800
801
801
803
803
804
808
811
17
Herunterladen