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