PYTHON

Rheinwerk Computing :: Python 3

1 Einleitung Herzlich willkommen in unserem umfassenden Handbuch zur Programmiersprache Python. Da Sie unser Buch in diesem Augenblick in den Händen halten, haben Sie eine erste Entscheidung bereits getroffen: Sie möchten in Python programmieren. Ob Sie nun ein Programmierneuling sind oder bereits Programmiererfahrung mitbringen, unser Ziel ist es, Ihnen im Laufe dieses Buchs die Sprache Python selbst und die damit zusammenhängenden Hintergründe, Konzepte und Werkzeuge nahezubringen. Zunächst möchten wir Sie aber zu Ihrer Entscheidung beglückwünschen, denn Python ist einfach, elegant und mächtig – kurzum: Es macht einfach Spaß, in Python zu programmieren. Bevor wir Sie in die wunderbare Welt von Python entführen, möchten wir Ihnen dieses Buch kurz vorstellen. Dabei werden Sie grundlegende Informationen darüber erhalten, wie das Buch aufgebaut ist und was Sie bei der Lektüre beachten sollten. Außerdem umreißen wir die Ziele und Konzepte des Buchs, damit Sie im Vorfeld wissen, was Sie erwartet.

Warum haben wir dieses Buch geschrieben? Wir, Peter Kaiser und Johannes Ernesti, sind vor nunmehr über zehn Jahren durch Zufall auf die Programmiersprache Python aufmerksam geworden und bis heute bei ihr geblieben. Besonders überzeugten uns Pythons Einfachheit, Flexibilität und Eleganz. Mit Python lässt sich eine Idee in kurzer Zeit zu einem funktionierenden Programm fortentwickeln. Es lassen sich nicht zuletzt mithilfe der umfangreichen Standardbibliothek kurze, elegante und produktive Programme für komplexe Aufgaben schreiben, was den Programmieralltag erheblich vereinfacht. Zudem läuft Python-Code unmodifiziert auf allen wichtigen Betriebssystemen und Rechnerarchitekturen. Aus diesen Gründen nutzen wir für unsere eigenen Projekte mittlerweile fast ausschließlich Python. Unsere erste Begegnung mit Python hatte auch ihre Schattenseiten: Zwar gibt es viele Bücher zum Thema, und auch im Internet finden sich Dokumentationen und Anleitungen, doch diese Texte sind entweder sehr technisch oder nur zum Einstieg in die Sprache Python gedacht. Die Fülle an Tutorials macht es einem Einsteiger einfach, in die Python-Welt »hineinzuschnuppern« und die ersten Schritte zu wagen. Es ist mit guten Tutorials sogar möglich, innerhalb weniger Tage ein fundiertes Grundwissen aufzubauen, mit dem sich durchaus arbeiten lässt. Problematisch ist der Übergang zur fortgeschrittenen Programmierung, da man dann mit den einführenden Tutorials nicht mehr vorankommt, trotzdem aber noch nicht in der Lage ist, die zumeist sehr technische Dokumentation von Python zur Weiterbildung zu nutzen. Ziel dieses Buchs ist es, diese Lücke zu schließen. Es bietet Ihnen neben einer umfassenden Einführung in die Sprache Python viele weiterführende Kapitel, die Sie letztlich in die Lage versetzen, Python professionell einzusetzen. Außerdem gibt Ihnen das Buch stets Anhaltspunkte und Begriffe an die Hand, mit denen Sie eine weiterführende Recherche, beispielsweise in der Python-Dokumentation, durchführen können.

Was leistet dieses Buch? Dieses Buch vermittelt Ihnen fundierte Python-Kenntnisse, mit denen Sie professionellen Aufgaben gewachsen sind. Dazu wird die Sprache Python umfassend und systematisch vom ersten einfachen Programm bis hin zu komplexen Sprachelementen eingeführt. Das Buch stellt den praxisbezogenen Umgang mit Python in den Vordergrund, es soll Sie möglichst schnell in die Lage versetzen, Python-Programme zu verstehen und selbst zu entwickeln. Abgesehen von der Einführung in die Sprache selbst werden große Teile der Standardbibliothek von Python besprochen. Dabei handelt es sich um eine Sammlung von Hilfsmitteln, die dem Programmierer zur Verfügung stehen, um komplexe Programme zu entwickeln. Die umfangreiche Standardbibliothek ist eine der größten Stärken von Python. Abhängig von der Bedeutung und Komplexität des jeweiligen Themas werden konkrete Beispielprogramme zur Demonstration erstellt, was zum einen im Umgang mit der Sprache Python schult und zum anderen als Grundlage für eigene Projekte dienen kann. Der Quelltext der Beispielprogramme ist sofort ausführbar und findet sich im Onlineangebot zu diesem Buch, das ein paar Seiten weiter im Abschnitt »Beispielprogramme« besprochen wird. Auch wenn der praxisorientierte Einstieg und die praktische Arbeit mit Python im Vordergrund stehen, wird viel Hintergrundwissen zur Programmierung vermittelt. Auf allzu theoretische Ausführungen verzichten wir dabei.

Wie ist dieses Buch aufgebaut? Dieses Buch ist in fünf Teile gegliedert, deren Inhalt im Folgenden kurz zusammengefasst wird. Sollten Sie mit den Begriffen im Moment noch nichts anfangen können, seien Sie unbesorgt – an dieser Stelle dienen alle genannten Begriffe zur Orientierung und werden im jeweiligen Kapitel des Buchs ausführlich erklärt. Der erste Teil bietet einen Einstieg in die Arbeit mit Python. Dabei legen wir Wert darauf, dass Sie schon früh Ihre ersten eigenen Programme entwickeln und testen können. Wir empfehlen Ihnen, das in diesem Teil erworbene Wissen in eigenen Python-Programmen anzuwenden. Wie bei der Programmierung allgemein gilt auch in Python, dass Learning by Doing die erfolgversprechendste Lernmethode ist. Der zweite Teil behandelt ausführlich die in Python vorhandenen Datentypen. Dabei werden numerische Datentypen, sequenzielle Datentypen, Zuordnungen, Mengen und Datentypen für Datums- bzw. Zeitangaben behandelt. Im dritten Teil stehen wichtige Konzepte im Vordergrund, die die Arbeit mit Python so angenehm machen, allerdings für den unerfahrenen Leser auch völliges Neuland darstellen können. Als große Oberthemen sind dabei Funktionen, Modularisierung und Objektorientierung zu nennen, die in Python eine zentrale Rolle spielen. Außerdem werden moderne Programmiertechniken wie Exception Handling, Iteratoren und Generatoren behandelt. Der vierte Teil konzentriert sich auf Pythons Batteries-included -Philosophie: Python sollte nach Möglichkeit alles in der Standardbibliothek mitbringen, was für die Entwicklung eigener Anwendungen erforderlich ist. Wir werden in diesem Teil auf viele der mitgelieferten Module eingehen und auch das ein oder andere Drittanbietermodul besprechen.

Es lohnt sich, hier ein wenig zu stöbern und zu experimentieren, um später zu wissen, welche Hilfsmittel der Standardbibliothek zur Lösung eines Problems bereitstehen. Im fünften und letzten Teil behandeln wir weiterführende Themen wie die Distribution fertiger Python-Programme und -Module an Endanwender bzw. andere Entwickler, die Programmierung grafischer Benutzeroberflächen mit Tkinter und Qt oder eine Einführung in das wissenschaftliche Rechnen mit Python. Ein weiteres zentrales Thema dieses Teils ist die Interoperabilität zwischen Python und anderen Programmiersprachen bzw. Frameworks wie C, Java und .NET. Zum Ende des Buchs besprechen wir die Unterschiede zwischen den Python-Generationen 2 und 3.

Wer sollte dieses Buch wie lesen? Dieses Buch richtet sich im Wesentlichen an zwei Typen von Lesern: diejenigen, die in die Programmierung mit Python einsteigen möchten und idealerweise bereits grundlegende Kenntnisse der Programmierung besitzen, und diejenigen, die mit der Sprache Python bereits mehr oder weniger vertraut sind und ihr Wissen vertiefen möchten. Für beide Typen ist dieses Buch bestens geeignet, da sowohl eine vollständige Einführung in die Programmiersprache als auch eine umfassende Referenz zur Anwendung von Python in vielen Bereichen geboten werden. Im Folgenden möchten wir eine Empfehlung an Sie richten, wie Sie dieses Buch – abhängig von Ihrem Kenntnisstand – lesen sollten. Als Programmieranfänger oder Umsteiger mit grundlegenden Kenntnissen in einer anderen Programmiersprache sollten Sie die ersten beiden Teile des Buchs sorgfältig durcharbeiten. Die Einführung wird Sie früh in die Lage versetzen, eigene Python-Programme zu schreiben. Nutzen Sie diese Chance, und programmieren Sie so viel wie möglich, bereits während Sie die Einführung lesen. Machen Sie sich darauf gefasst, dass der Anspruch ab Teil 2 rasch zunehmen wird, denn dieses Buch soll Sie in die Lage versetzen, Python professionell zu nutzen.

Wenn Sie bereits gut programmieren können und dieses Buch als Umstieg von einer anderen Sprache nach Python verwenden möchten, sollten Sie die ersten drei Teile des Buchs lesen, um die Syntax und die Konzepte von Python kennenzulernen und mögliche Wissenslücken zu füllen. Abhängig von Ihrem Kenntnisstand wird es Ihnen nicht schwerfallen, die Sprache Python zu erlernen. Im Anschluss daran können Sie Ihre Kenntnisse in den Teilen 4 und 5 vertiefen.

Als letzte Zielgruppe kommen erfahrene Python-Programmierer in Betracht. Sollte der Umgang mit Python für Sie zum alltäglichen Geschäft gehören, können Sie den ersten, zweiten und, je nach Kenntnisstand, auch den dritten Teil des Buchs überfliegen. Für Sie werden die letzten beiden Teile interessanter sein, die Ihnen als hilfreiches Nachschlagewerk dienen und weiterführende Informationen und hilfreiche Tipps zu speziellen Anwendungsthemen bieten.

Beispielprogramme Als Ergänzung zu den abgedruckten Beispielen stellen wir Ihnen weitere Beispiele zur Verfügung, die sich aus verschiedenen Gründen nicht in diesem Buch befinden. Das betrifft z. B. umfangreichere Programme, deren technische Einzelheiten wir aus didaktischen Gründen nicht abdrucken wollen. Sie können über das Onlineangebot zu diesem Buch unter auf diese Inhalte zugreifen.

Übersicht zu den verschiedenen Auflagen Dieses Buch liegt Ihnen hiermit in der fünften Auflage vor. Im Folgenden finden Sie Bemerkungen und Erläuterungen zu den Neuerungen der verschiedenen Auflagen. Neuerungen in der zweiten Auflage (2009) Seit dem Erscheinen der ersten Auflage dieses Buchs im Frühjahr 2008 hat sich in der Python-Welt einiges bewegt. So ist mit Python 3.0 die Sprache grundlegend überarbeitet worden, wodurch sich für den Python-Programmierer einiges ändert. Insbesondere ist Python 3.0 nicht mehr kompatibel zu früheren Python-Versionen. Aus diesem Grund haben wir das Buch vollständig überarbeitet und auf den neusten Stand gebracht. Wir haben besonderen Wert darauf gelegt zu verdeutlichen, wie sich Python 3.0 von früheren Versionen unterscheidet. Am Ende dieses Buchs stellen wir in einem Migrationskapitel die Unterschiede zwischen den Python-Versionen im Detail gegenüber und beschreiben, wie bestehende Python-Programme komfortabel an die neuste Version angepasst werden können. Neuerungen in der dritten Auflage (2012) Vier Jahre nach Erscheinen der ersten Auflage und drei Jahre nach der zweiten freuen wir uns, die dritte Auflage unseres Python-Handbuchs zu präsentieren. Wieder hat sich während dieser Zeit in der Python-Welt viel verändert. So ist Python 3.x inzwischen weitgehend akzeptiert und wird von den meisten Drittanbieterbibliotheken unterstützt. Für die dritte Auflage haben wir das Buch noch einmal vollständig überarbeitet und insbesondere im Hinblick auf Übersichtlichkeit und die Verwendung als Nachschlagewerk verbessert. Auch unter didaktischen Gesichtspunkten sind wir das Buch durchgegangen und haben teilweise ganze Kapitel umstrukturiert. Selbstverständlich wurden alle Erklärungen und Beispiele an die aktuellste Python-Version angepasst. Abgesehen von den angesprochenen Verbesserungen gibt es zwei neue Kapitel: eines über die Programmierung grafischer Benutzeroberflächen mit PyQt und eines über wissenschaftliches Rechnen mit NumPy und SciPy. Das PyQt-Kapitel war bereits in der ersten Auflage enthalten und konnte nun, da PyQt in einer mit Python 3 kompatiblen Version erschienen ist, wieder aufgenommen werden. Neuerungen in der vierten Auflage (2015) Nach den großen und aufregenden Umwälzungen mit Version 3.0 ist es in der Python-Welt wieder ruhiger geworden. Zum Zeitpunkt der Drucklegung der mittlerweile vierten, überarbeiteten Auflage dieses Buchs liegt Python in der Version 3.4 vor. Nach wie vor bringt jede neue Python-Version Änderungen in der Sprache mit sich, die mit in unsere Überarbeitung eingeflossen sind; eine große Veränderung hat es aber nicht gegeben. Aus diesem Grund haben wir das didaktische Konzept und die Zielsetzung des Buchs einer Überarbeitung und Aktualisierung unterzogen. Während die vorangegangenen Auflagen in vielen Bereichen einen starken Referenzcharakter hatten, legen wir den Fokus dieser Auflage mehr auf den praxisorientierten Umgang mit Python. Trockene Referenzkapitel wurden zugunsten beispielorientierter Einführungen überarbeitet. Zudem sprechen wir neue Themen wie Bildverarbeitung oder die Interoperabilität zwischen Python und anderen Programmiersprachen an. Da das Webframework Django für die Entwicklung komplexer Internetauftritte nun auch mit Python 3 kompatibel ist, konnten wir das entsprechende Kapitel der ersten Auflage in überarbeiteter Form wieder aufnehmen. Neuerungen der fünften Auflage (2017) Die stetige Entwicklung von Python seit der Version 3.0 schreitet weiter voran: Mittlerweile ist Python 3.6 verfügbar. Genauso wie 2015 reagieren wir mit dieser Auflage auf die vielen eher kleineren Änderungen und Verbesserungen der Sprache. Natürlich sind auch etwaige Aktualisierungen von Drittanbieterbibliotheken in die entsprechenden Kapitel eingeflossen. Neu in dieser Auflage ist die Abkehr von der nicht mehr zeitgemäßen Buch-CD hin zu einer Onlinelösung, um Ihnen nicht abgedruckte Beispielprogramme zugänglich zu machen. Durch diese Änderung können Sie einerseits komfortabel von jedem Internetanschluss aus auf die Inhalte zugreifen, andererseits haben wir dadurch die Möglichkeit, die Programme auch nach dem Erscheinen des Buchs weiter zu pflegen. Wir haben diese Umstellung zum Anlass genommen, alle Beispiele – sowohl im Buch als auch auf der ehemaligen CD – einer kräftigen Überarbeitung zu unterziehen. Zu guter Letzt beziehen wir uns in dieser Auflage auf die Python-Distribution Anaconda. Diese stellt eine vorkonfigurierte Python-Umgebung bereit, mit der sich fast alle Beispiele in diesem Buch ohne zusätzlichen Installationsaufwand nachvollziehen lassen. Für Sie als Leser hat dies zur Folge, dass Sie sich in den Kapiteln zu Drittanbieterbibliotheken nicht mehr mit teils umständlichen Installationsanweisungen herumplagen müssen. Danksagung Nachdem wir Ihnen das Buch vorgestellt und hoffentlich schmackhaft gemacht haben, möchten wir uns noch bei denjenigen bedanken, die uns bei der Ausarbeitung des Manuskripts begleitet, unterstützt und immer wieder zum Schreiben angetrieben haben. Unser besonderer Dank gilt Prof. Dr. Ulrich Kaiser, der mit seiner konstruktiven Kritik und unzähligen Stunden des Korrekturlesens die Qualität des Buchs deutlich verbessert hat. Außerdem ist es seiner Initiative zu verdanken, dass wir überhaupt dazu gekommen sind, ein Buch zu schreiben. Wir sind sehr glücklich, dass wir von seiner Sachkenntnis und Erfahrung profitieren konnten. Neben der fachlichen Korrektheit trägt auch die verwendete Sprache maßgeblich zur Qualität des Buchs bei. Dass sich dieses Buch so gut liest, wie es sich liest, haben wir Angelika Kaiser zu verdanken, die auch noch so kompliziert verschachtelte Satzgefüge in klare, gut verständliche Formulierungen verwandeln konnte. Wir danken auch Herbert Ernesti dafür, dass er das fertige Werk noch einmal als Ganzes unter die Lupe genommen hat und viele nützliche Verbesserungsvorschläge machen konnte. Die Anfängerfreundlichkeit der Erklärungen wurde von Anne Kaiser experimentell erprobt und für gut befunden – vielen Dank dafür. Wir danken Dr. Daniel Weiß, der am Karlsruher Institut für Technologie (KIT) erstmals im Wintersemester 2015 eine Einführungsvorlesung zu Python auf Basis dieses Buchs konzipiert hat. Seine Anmerkungen konnten die Qualität des Buchs an einigen Stellen deutlich steigern. Im Jahr 2017 wird die Vorlesung zum dritten Mal angeboten und erfreut sich weiterhin großer Beliebtheit. Von den zahlreichen Diskussionen mit Herrn Weiß und den Studenten hat insbesondere die didaktische Qualität des Buchs profitiert. Herr Weiß selbst schreibt zu seinen Erfahrungen mit Python: »Immer wieder wurde von meinen Kollegen der Gedanke formuliert, die Vorzüge von Python im Rahmen von Lehre und Wissenschaft zu nutzen. Ich zögerte, da ich zu diesem Zeitpunkt noch keine Erfahrung mit Python gemacht hatte, mich in anderen Programmiersprachen gut auskannte. Nachdem Johannes Ernesti seine Unterstützung für eine Schlüsselqualifikation ›Einführung in Python‹ zugesagt hatte, fing ich an, mich mit Python zu beschäftigen. Das vorliegende Buch bildete einen idealen Einstieg. Dort werden interessante Themen auch bis in die Tiefe klar präsentiert. So war das Erlernen von Python sehr leicht. Heute haben wir die Veranstaltung am Karlsruher Institut für Technologie bereits mehrfach angeboten. Das Interesse unter den Studierenden ist enorm, auch über die Mathematische Fakultät hinaus.« Außerdem danken wir allen Mitarbeitern des Rheinwerk Verlags, die an der Erstellung dieses Buchs beteiligt waren. Namentlich hervorheben möchten wir dabei unsere Lektorinnen Judith Stevens-Lemoine und Anne Scheibe, die uns dabei geholfen haben, uns durch den Autorendschungel zu schlagen, und uns dabei alle Freiheiten für eigene Ideen gelassen haben. Zum Schluss möchten wir uns noch bei allen Lesern der ersten Auflagen herzlich bedanken, deren unzählige E-Mails mit Hinweisen, Kommentaren, Kritik und Fehlerkorrekturen in die fünfte Auflage mit eingeflossen sind. Karlsruhe, im Juni 2017 Johannes Ernesti – ernesti@python-buch.de Peter Kaiser – kaiser@python-buch.de Ihre Meinung Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

Andreas Müller

LEAVE A REVIEW