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