Zweite Auflage
Paul Barry
Lektorat: Alexandra Follenius
Übersetzung: Jørgen W. Lang
Korrektorat: Sibylle Feldmann, www.richtiger-text.de
Satz: Ulrich Borstelmann, www.borstelmann.de
Herstellung: Susanne Bröckelmann
Umschlaggestaltung: Michael Oréal, www.oreal.de
Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn
Bibliografische Information Der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
Print 978-3-96009-035-9
PDF 978-3-96010-135-2
ePub 978-3-96010-136-9
mobi 978-3-96010-137-6
Dieses Buch erscheint in Kooperation mit O’Reilly Media, Inc. unter dem Imprint »O’REILLY«.
O’REILLY ist ein Markenzeichen und eine eingetragene Marke von O’Reilly Media, Inc. und wird mit Einwilligung des Eigentümers verwendet.
2. Auflage 2017
Copyright © 2017 by dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Authorized German translation of the English edition of Head First Python, 2nd Edition, ISBN 978-1-4919-1953-8 © 2016 Paul Barry. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.
5 4 3 2 1 0
|
Zu diesem Buch – sowie zu vielen weiteren O’Reilly-Büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei oreilly.plus+: www.oreilly.plus |
Ich widme dieses Buch auch weiterhin den großzügigen Menschen in der Python-Gemeinschaft, die daran mitgewirkt haben, Python zu dem zu machen, was es heute ist.
Und denen, die das Lernen von Python und seinen Technologien immerhin so komplex gemacht haben, dass ein Buch wie dieses beim Erlernen eine Hilfe sein kann.
Paul Barry lebt und arbeitet in Carlow, Irland, einer kleinen Stadt mit etwa 35.000 Einwohnern ca. 80 km südwestlich der Hauptstadt Dublin.
Paul hat einen Titel als B.Sc. in Information Systems sowie als M.Sc. in Computing. Außerdem besitzt er eine Lehrerlaubnis im Bereich Learning and Teaching.
Paul arbeitet seit 1995 am Institute of Technology, Carlow und hält dort seit 1997 Vorlesungen. Vor seiner Lehrtätigkeit verbrachte Paul ein Jahrzehnt in der IT-Industrie und arbeitete in Irland und Kanada, meistens im Gesundheitswesen. Paul ist mit Deirdre verheiratet, und gemeinsam haben sie drei Kinder (Joseph, Aaron und Aideen, von denen zwei inzwischen selbst studieren).
Die Programmiersprache Python und verwandte Technologien sind seit 2007 ein integraler Bestandteil von Pauls Vordiplom-Kursen.
Paul ist Autor (oder Koautor) von vier weiteren technischen Büchern: zwei über Python und zwei über Perl. In der Vergangenheit hat er als Redakteur für das Linux Journal Magazine eine Menge Artikel geschrieben.
Aufgewachsen ist Paul in Belfast, Nordirland, was seine Persönlichkeit und seinen lustigen Akzent erklärt (es sei denn, Sie stammen selbst »aus dem Norden«, und empfinden Pauls Wesen und Akzent als vollkommen normal).
Paul finden Sie auf Twitter (@barrypj) und auf seiner Website unter: http://paulbarry.itcarlow.ie.
1 |
Die Grundlagen: Volle Kraft voraus! |
2 |
Listendaten: Mit geordneten Daten arbeiten |
3 |
Strukturierte Daten: Mit strukturierten Daten arbeiten |
4 |
Code wiederverwenden: Funktionen und Module |
5 |
Eine Webapplikation erstellen: Auf ins wahre Leben! |
6 |
Daten speichern und bearbeiten: Wo kommen die Daten hin? |
7 |
Datenbanken benutzen: Die DB-API von Python verwenden |
8 |
Ein bisschen Klasse: Verhalten und Zustand abstrahieren |
9 |
Das Kontextmanagement-Protokoll: Sich in Pythons with-Anweisung einklinken |
10 |
Funktionsdekoratoren: Funktionen verpacken |
11 |
Mit Ausnahmen umgehen: Was zu tun ist, wenn mal etwas schiefgeht |
11¾ |
Ein bisschen Threading: Taten statt Warten |
12 |
Fortgeschrittene Iteration: Schleifen wie verrückt |
A |
Installation: Python installieren |
B |
PythonAnywhere: Ihre Webapplikation bereitstellen |
C |
Die 10 wichtigsten Dinge, die wir nicht behandelt haben: Es gibt immer noch etwas zu lernen |
D |
Die 10 wichtigsten Projekte, die wir nicht behandelt haben: Noch mehr Werkzeuge, Bibliotheken und Module |
E |
Mitmachen: Die Python-Gemeinschaft |
|
Index |
Einführung
Ihr Gehirn und Python. Sie versuchen, etwas zu lernen, und Ihr Hirn tut sein Bestes, damit das Gelernte nicht hängen bleibt. Es denkt nämlich: »Wir sollten lieber ordentlich Platz für wichtigere Dinge lassen, z. B. für das Wissen darüber, welche Tiere einem gefährlich werden könnten, oder dass es eine ganz schlechte Idee ist, nackt Snowboard zu fahren.« Tja, wie schaffen wir es nun, Ihr Gehirn davon zu überzeugen, dass Ihr Leben davon abhängt, wie man in Python programmiert?
Für wen ist dieses Buch?
Wir wissen, was Sie gerade denken
Und wir wissen, was Ihr Gehirn gerade denkt
Metakognition: Nachdenken übers Denken
Das haben WIR getan
Lies mich
Die Grundlagen
1Volle Kraft voraus!
Finden Sie einen möglichst schnellen Einstieg in die Programmiersprache Python. In diesem Kapitel geben wir Ihnen einen Einblick in die Grundlagen der Python-Programmierung, und zwar wie es bei Von Kopf bis Fuß-Büchern üblich ist: indem wir gleich loslegen. Nach ein paar Seiten ist Ihr erstes Programm bereits lauffähig. Am Ende des Kapitels können Sie nicht nur Ihr Beispielprogramm ausführen, sondern auch den Code verstehen (und noch einiges mehr). Unterwegs lernen Sie ein paar der Dinge, die Python als Programmiersprache ausmachen. Lassen Sie uns also keine Zeit verschwenden. Blättern Sie um, und los geht‘s!
Die IDLE-Fenster verstehen
Code ausführen, eine Anweisung nach der anderen
Funktionen + Module = Standardbibliothek
Datenstrukturen sind schon eingebaut
Methodenaufrufe haben Ergebnisse
Entscheiden, wann Codeblöcke ausgeführt werden
Welche »else« will schon mit »if«?
Suiten können selbst Suiten enthalten
Zurück zur Python-Shell
Experimente auf der Shell
Über eine Folge von Objekten iterieren
Eine bestimmte Anzahl von Wiederholungen ausführen
Das Ergebnis von Aufgabe 1 auf unseren Code anwenden
Die Ausführung unterbrechen
Zufallszahlen mit Python erzeugen
Eine ernsthafte Businessapplikation programmieren
Machen die Einrückungen Sie verrückt?
Mit dem help-Befehl des Interpreters den Hilfetext zu einer Funktion anzeigen
Mit Wertebereichen experimentieren
Der Code aus Kapitel 1
Listendaten
2Mit geordneten Daten arbeiten
Alle Programme verarbeiten Daten, und Python-Programme sind da keine Ausnahme. Sehen Sie sich einmal um: Daten sind überall. Programmierung hat fast immer mit Daten zu tun: Daten sammeln, Daten verarbeiten, Daten verstehen. Um effektiv damit arbeiten zu können, brauchen Sie einen Ort, um Ihre Daten abzulegen. Dank einiger äußerst vielseitiger Datenstrukturen kann Python hier besonders punkten: Listen, Dictionaries, Tupel und Sets. In diesem Kapitel werden wir alle vier vorstellen, den Großteil des Kapitels werden wir uns jedoch eingehend mit Listen befassen. (Die anderen drei Strukturen werden wir in Kapitel 3 genauer betrachten.) Wir gehen absichtlich so früh auf diese Datenstrukturen ein, da die meisten Arbeiten in Python mit Daten zu tun haben.
Zahlen, Strings … und Objekte
Die vier eingebauten Datentypen
Eine ungeordnete Datenstruktur: Dictionary
Eine Datenstruktur ohne Duplikate: Set
Literale Erzeugung von Listen
Wenn Sie mit mehr als ein paar Codezeilen arbeiten, sollten Sie den Editor benutzen
Eine Liste zur Laufzeit »wachsen lassen«
Zugehörigkeit mit »in« überprüfen
Objekte aus einer Liste entfernen
Eine Liste mit Objekten erweitern
Objekte in eine Liste einfügen
Datenstrukturen richtig kopieren
Listen erweitern die Schreibweise der eckigen Klammern
Listen verstehen start, stop und step
start- und stop-Werte für Listen
Listen mithilfe von Slices bearbeiten
Pythons »for«-Schleife versteht Listen
Marvins Slices im Detail
Wann man Listen nicht benutzen sollte
Der Code aus Kapitel 2, 1 von 2
Strukturierte Daten
3Mit strukturierten Daten arbeiten
Pythons Listen sind eine großartige Datenstruktur, aber kein Allheilmittel. Wenn Sie mit wirklich strukturierten Daten arbeiten müssen (und eine Liste zum Speichern nicht geeignet ist), kann Pythons eingebaute Dictionary-(Wörterbuch-)Struktur möglicherweise helfen. Sammlungen von Schlüssel/Wert-Paaren lassen sich problemlos speichern und bearbeiten. Wir werden Pythons Dictionary-Struktur in diesem Kapitel eingehend untersuchen und Ihnen dabei auch gleich Sets und Tupel vorstellen. Gemeinsam mit Listen (bekannt aus dem vorigen Kapitel) bieten Dictionary, Set und Tupel eine Reihe vorgefertigter Datenstrukturen, die die Arbeit mit Daten in Python deutlich erleichtern.
Ein Dictionary speichert Schlüssel/Wert-Paare
Dictionaries im Code erkennen
Reihenfolge des Einfügens wird NICHT beibehalten
Werte mithilfe eckiger Klammern nachschlagen
Zur Laufzeit mit Dictionaries arbeiten
Einen Frequenzzähler aktualisieren
Über ein Dictionary iterieren
Über Schlüssel und Werte iterieren
Mithilfe von »items« über ein Dictionary iterieren
Wie dynamisch sind Dictionaries wirklich?
KeyError-Laufzeitfehler vermeiden
Vorhandensein mit »in« überprüfen
Initialisierung vor Gebrauch sicherstellen
»in« durch »not in« ersetzen
Die »setdefault«-Methode verwenden
Sets effektiv erzeugen
Set-Methoden sinnvoll nutzen
Ein Plädoyer für Tupel
Eingebaute Datenstrukturen kombinieren
Auf Daten einer komplexen Datenstruktur zugreifen
Der Code aus Kapitel 3, Seite 1 von 2
Name: Ford Prefect
Gender: Male
Occupation: Researcher
Home Planet: Betelgeuse Seven
Code wiederverwenden
4Funktionen und Module
Die Wiederverwendbarkeit von Code ist Voraussetzung für ein wartbares System. Und bei Python ist Anfang und Ende aller Wiederverwendbarkeit die Funktion. Nehmen Sie ein paar Codezeilen, geben Sie ihnen einen Namen, und schon haben Sie eine (wiederverwendbare) Funktion. Nehmen Sie eine Sammlung von Funktionen und packen Sie sie in eine eigene Datei, und schon haben Sie ein Modul (das ebenfalls wiederverwendet werden kann). Es stimmt schon: Teilen hilft. Am Ende dieses Kapitels werden Sie wissen, wie Code mithilfe von Pythons Funktionen und Modulen wiederverwendet und mit anderen geteilt werden kann.
Code mithilfe von Funktionen wiederverwenden
Einführung in Funktionen
Rufen Sie Ihre Funktionen auf
Funktionen können Argumente übernehmen
Einen Wert zurückgeben
Mehr als einen Wert zurückgeben
Eingebaute Datenstrukturen: Wiederholung
Eine allgemein nützliche Funktion erstellen
Eine neue Funktion erstellen, 1 von 3
Standardwerte für Argumente definieren
Positionelle und Schlüsselwortzuweisung im Vergleich
Aktualisierung unseres Wissens über Funktionen
Python auf der Kommandozeile ausführen
Die erforderlichen Setup-Dateien erstellen
Eine Distributionsdatei erstellen
Pakete mit »pip« installieren
Demonstration von Werteparametern
Demonstration von Referenzparametern
Die Entwicklerwerkzeuge zum Testen installieren
Wie PEP 8-konform ist unser Code?
Die Fehlermeldungen verstehen
Der Code aus Kapitel 4
Eine Webapplikation erstellen
5Auf ins wahre Leben!
Jetzt kennen Sie genug Python, um richtig loszulegen. Nachdem Sie die ersten vier Kapitel dieses Buchs gemeistert haben, sind Sie in der Lage, Python in jeder Programmiersituation einzusetzen (obwohl es noch eine Menge zu lernen gibt). Anstatt die lange Liste verschiedener Programme abzuarbeiten, wollen wir uns in den folgenden Kapiteln mit der Erstellung einer webbasierten Applikation beschäftigen – einem Bereich, in dem Python besonders stark ist. Unterwegs werden Sie etwas mehr über Python lernen. Bevor wir loslegen, wollen wir Ihre bisherigen Python-Kenntnisse aber noch ein wenig auffrischen.
Python: Was Sie bereits wissen
Was soll unsere Webapplikation können?
Flask installieren
Wie funktioniert Flask?
Die Flask-Web-App zum ersten Mal ausführen
Ein Flask-Webapplikationsobjekt erzeugen
Eine Funktion mit einer URL dekorieren
Das Verhalten Ihrer Webapplikation testen
Funktionalität im Web bereitstellen
Das HTML-Formular erstellen
Templates beziehen sich auf Webseiten
Templates mit Flask rendern
Das Formular der Webapplikation anzeigen
Vorbereitungen zum Ausführen des Template-Codes
HTTP-Statuscodes verstehen
Mit POST-Daten umgehen
Den Zyklus aus Bearbeiten, Anhalten, Starten und Testen optimieren
Mit Flask auf Formulardaten zugreifen
Die Formulardaten in der Webapplikation verwenden
Die Ergebnisse als HTML ausgeben
Die Webapplikation für die Cloud vorbereiten
Der Code aus Kapitel 5
Daten speichern und bearbeiten
6Wo kommen die Daten hin?
Früher oder später müssen Sie Ihre Daten irgendwo sicher speichern. Und wenn es um Datenspeicherung geht, ist Python ganz für Sie da. In diesem Kapitel lernen Sie, wie man Daten in Textdateien speichert und sie wieder ausliest. Das erscheint einem als Speichermechanismus vielleicht ein wenig simpel, wird aber in vielen Problembereichen eingesetzt. Neben dem Speichern und Auslesen von Daten aus Dateien werden Sie außerdem noch ein paar Tricks zum Bearbeiten von Daten erfahren. Das »ernste Zeug« (Daten in einer Datenbank speichern) heben wir uns für das folgende Kapitel auf, trotzdem wird uns die Arbeit mit Dateien jetzt schon ganz ordentlich auf Trab halten.
Etwas mit den Daten Ihrer Webapplikation anstellen
Python unterstützt die Öffnen-Bearbeiten-Schließen-Technik
Daten aus einer bestehenden Datei lesen
Eine bessere Version von Öffnen-Bearbeiten-Schließen: »with«
Das Protokoll von der Webapplikation anzeigen lassen
Die Rohdaten per »Quelltext anzeigen« untersuchen
Es ist Zeit, Ihre Daten zu escapen
Die gesamte Log-Datei in der Webapplikation betrachten
Bestimmte Attribute des Web-Requests protokollieren
Eine Zeile voneinander getrennter Datenfelder protokollieren
Von Rohdaten zu lesbaren Ausgaben
Lesbare Ausgaben mit HTML erzeugen
Darstellungslogik in das Template integrieren
Mit Jinja2 lesbare Ausgaben erzeugen
Der aktuelle Status Ihres Webapplikationscodes
Die Daten befragen
Der Code aus Kapitel 6
Datenbanken benutzen
7Die DB-API von Python verwenden
Datenspeicherung in einer relationalen Datenbank ist praktisch. In diesem Kapitel lernen Sie, Code für die Zusammenarbeit mit der beliebten MySQL-Datenbank zu schreiben. Hierfür verwenden wir eine allgemeine Datenbankschnittstelle namens DB-API. Mit dieser API (Teil der Python-Standardinstallation) können Sie Code schreiben, der sich leicht zwischen verschiedenen Datenbankprodukten austauschen lässt – sofern die verwendete Datenbank SQL versteht. Wir werden MySQL als Datenbank benutzen, der DB-API-Code kann aber auch mit einer beliebigen anderen relationalen Datenbank verwendet werden. Zunächst wollen wir sehen, was für den Einsatz relationaler Datenbanken mit Python gebraucht wird. In diesem Kapitel gibt es eher wenig neuen Python-Code. Allerdings ist der Einsatz von Python für die Kommunikation mit Datenbanken ein sehr wichtiges Thema, über das man auf jeden Fall Bescheid wissen sollte.
Die Webapplikation für die Benutzung von Datenbanken vorbereiten
Aufgabe 1: Den MySQL-Server installieren
Einführung in die DB-API von Python
Aufgabe 2: Einen MySQL-Datenbanktreiber für Python installieren
MySQL-Connector/Python installieren
Aufgabe 3: Die Datenbank und die nötigen Tabellen für die Webapplikation erstellen
Eine Struktur für Ihre Log-Daten definieren
Bestätigen Sie, dass die Tabelle für die Daten bereit ist
Aufgabe 4: Den Code für die Datenbank und die Tabellen unserer Webapplikation schreiben
Daten speichern ist die halbe Miete
Wie kann der Datenbankcode am besten wiederverwendet werden?
Überlegen Sie, was Sie hier wiederverwenden wollen
Und was ist mit import?
Sie kennen dieses Muster bereits
So schlecht sind die schlechten Nachrichten gar nicht
Der Code aus Kapitel 7
Ein bisschen Klasse
8Verhalten und Zustand abstrahieren
Klassen speichern Verhalten und Zustand gemeinsam. In diesem Kapitel legen wir die Webapplikation zur Seite und beschäftigen uns stattdessen mit Python-Klassen. Der Anlass ist, dass wir mithilfe einer Python-Klasse einen Kontextmanager erstellen wollen. Und weil die Erstellung und Programmierung von Klassen sowieso wissenswert ist, haben wir ihnen dieses Kapitel gewidmet. Sie werden hier nicht alles über Klassen lernen, aber wir wollen zumindest die Dinge ansprechen, die Sie brauchen, um für die Erstellung des Kontextmanagers Ihrer Webapplikation fit zu werden. Dann wollen wir mal schauen, worum es hier eigentlich geht.
Sich in die »with«-Anweisung einklinken
Kurze Einführung in Objektorientierung
Objekte aus Klassen erzeugen
Objekte übernehmen das Verhalten, aber nicht den Zustand
Mehr mit CountFromBy anfangen
Methodenaufrufe: Die Details verstehen
Methoden einer Klasse hinzufügen
Die Bedeutung von »self«
Die Gültigkeit von Geltungsbereichen
Stellen Sie Ihren Attributnamen »self« voran
(Attribut-)Werte vor Gebrauch initialisieren
__init__ initialisiert Attribute
Attribute mit »__init__« initialisieren
Die Darstellung von CountFromBy verstehen
Die Darstellung von CountFromBy selbst definieren
Sinnvolle Standardwerte für CountFromBy
Klassen: Was wir bereits wissen
Der Code aus Kapitel 8
Das Kontextmanagement-Protokoll
9Sich in Pythons with-Anweisung einklinken
Es ist Zeit, das Gelernte anzuwenden. In Kapitel 7 haben wir über die Verwendung einer relationalen Datenbank mit Python gesprochen, während Kapitel 8 eine Einführung in Python-Klassen enthielt. Nun werden wir beide Techniken kombinieren, um einen Kontextmanager zu erstellen. Dieser soll die with-Anweisung so erweitern, dass sie auch mit relationalen Datenbanken funktioniert. In diesem Kapitel klinken Sie sich in die with-Anweisung ein, indem Sie eine neue Klasse erstellen, die mit Pythons Kontextmanagement-Protokoll konform ist.
Wie können wir den Code unserer Webapplikation am besten mit anderen teilen?
Kontext anhand von Methoden verwalten
Sie kennen den Kontextmanager bereits
Eine neue Klasse für den Kontextmanager erstellen
Die Klasse mit der Datenbankkonfiguration initialisieren
Setup mit »__enter__«
Teardown mit »__exit__«
Den Code der Webapplikation überdenken, Teil 1 von 2
Die »log_request«-Funktion auf dem Prüfstand
Die »log_request«-Funktion anpassen
Die »view_the_log«-Funktion auf dem Prüfstand
Nicht nur der Code ändert sich
Die »view_the_log«-Funktion anpassen
Die Datenfragen beantworten
Der Code aus Kapitel 9, 1 von 2
Funktionsdekoratoren
10 Funktionen verpacken
Für die Erweiterung von Code gibt es neben dem Kontextmanagement-Protokoll auch noch andere Optionen. In Python können Sie auch Funktionsdekoratoren benutzen. Damit können Sie Funktionscode erweitern, ohne diesen zu verändern. Auf den ersten Blick erscheint das wie schwarze Magie, aber keine Sorge: So schlimm ist es nicht. Trotzdem sehen viele Python-Programmierer das Schreiben von Funktionsdekoratoren als eher schwierig an. Dadurch werden Dekoratoren weniger eingesetzt als eigentlich sinnvoll. In diesem Kapitel wollen wir Ihnen zeigen, dass die Erstellung und Verwendung eigener Dekoratoren nicht so schwer ist, wie oft behauptet wird.
Der Webserver (nicht Ihr Computer) führt den Code aus
Zustandsverwaltung mit Flasks Sessions
Den Zustand im Dictionary nachschlagen
Anmeldevorgänge mit Sessions verwalten
Log-out und Status überprüfen
Eine Funktion an eine Funktion übergeben
Eine übergebene Funktion aufrufen
Eine Liste mit Argumenten übernehmen
Eine Liste mit Argumenten verarbeiten
Ein Dictionary mit Argumenten übernehmen
Ein Dictionary mit Argumenten verarbeiten
Funktionsargumente von beliebiger Zahl und beliebigem Typ übernehmen
Einen Funktionsdekorator erstellen
Der letzte Schritt: Mit Argumenten umgehen
Der Dekorator im praktischen Einsatz
Zurück zur Zugangsbeschränkung für /viewlog
Der Code aus Kapitel 10, Teil 1 von 2
Mit Ausnahmen umgehen
11 Was zu tun ist, wenn mal etwas schiefgeht
Egal wie gut Ihr Code ist, irgendetwas geht immer schief. Sie haben alle Beispiele in diesem Buch erfolgreich durchgearbeitet und sind sich ziemlich sicher, dass der bisherige Code auch funktioniert. Aber ist der deshalb wirklich robust? Vermutlich nicht. Es ist (bestenfalls) naiv, zu glauben, man könne Code schreiben und es würde schon alles gut gehen. Vorsicht ist hier deutlich besser als Vertrauensseligkeit. Wenn Ihr Code auch dann noch funktionieren soll, wenn die Dinge aus dem Ruder laufen, müssen Sie sorgfältig vorgehen. In diesem Kapitel zeigen wir nicht nur, was alles schiefgehen kann, sondern auch, was in solchen Fällen (oder oft sogar davor) zu tun ist.
Datenbanken sind nicht immer verfügbar
Angriffe aus dem Web können richtig nerven
Ein- und Ausgaben sind (manchmal) langsam
Funktionsaufrufe können fehlschlagen
Versuchen Sie immer, möglicherweise fehlerhaften Code auszuführen
Ein try, viele excepts
Ein Handler, sie zu knechten …
Mit »sys« mehr über Ausnahmen erfahren
Noch mal: der »catch all«-Ausnahme-Handler
Zurück zum Code unserer Webapplikation
Ausnahmen leise handhaben
Mit anderen Datenbankfehlern umgehen
Vermeiden Sie eng verbundenen Code
Wiedersehen mit dem DBcm-Modul
Eigene Ausnahmen erstellen
Was kann mit »DBcm« noch schiefgehen?
Die Behandlung von SQLError funktioniert anders
Einen SQLError auslösen
Ein schneller Rückblick: Robustheit hinzufügen
Wie mit Wartezeiten umgehen? Kommt drauf an …
Der Code aus Kapitel 11, 1 von 3
...
Exception
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- AssertionError
+-- AttributeError
+-- BufferError
+-- EOFError
...
Ein bisschen Threading
11¾ Taten statt Warten
Manchmal braucht Code wirklich ziemlich lang für die Ausführung. Abhängig davon, wem das auffällt, kann das ein Problem sein oder nicht. Wenn Ihr Code »hinter den Kulissen« 30 Sekunden für die Ausführung braucht, ist die Wartezeit vermutlich kein Thema. Wenn aber ein Benutzer 30 Sekunden auf eine Antwort Ihrer Applikation wartet, merkt das jeder. Die Lösung hängt davon ab, welche Aufgabe Ihre Applikation hat (und wer warten muss). In diesem kurzen Kapitel zeigen wir ein paar mögliche Optionen und sehen uns dann eine Lösung für das tatsächliche Problem an: Was passiert, wenn etwas sehr lange dauert?
Warten: Was ist zu tun?
Wie fragen Sie Ihre Datenbank ab?
Datenbank-INSERTs und -SELECTs sind verschieden
Mehrere Dinge gleichzeitig tun
Keine Sorge. Benutzen Sie Threads
Das Wichtigste zuerst: keine Panik
Keine Sorge: Flask kann helfen
Ist Ihre Webapplikation jetzt robust?
Der Code aus Kapitel 11¾, 1 von 2
Fortgeschrittene Iteration
12 Schleifen wie verrückt
Es ist erstaunlich, wie viel Zeit unsere Programme in Schleifen verbringen. Das überrascht nicht, weil die meisten Programme die gleiche Aufgabe viele Male durchführen müssen. Für die Optimierung von Schleifen gibt es zwei Ansätze: 1. die Verbesserung der Schleifensyntax (um die Definition einer Schleife zu erleichtern) und 2. die Verbesserung der Schleifenausführung (um sie schneller zu machen). Als Python 2 noch jung war (also vor sehr, sehr langer Zeit), haben die Designer der Sprache ein Merkmal entwickelt, das beide Ansätze implementiert. Es nennt sich Comprehension (eine Form der Abstraktion). Lassen Sie sich durch den seltsamen Namen nicht täuschen. Am Ende dieses Kapitels werden Sie sich fragen, wie Sie bisher ohne Comprehensions leben konnten.
CSV-Daten als Listen einlesen
CSV-Daten als Dictionaries einlesen
Rohdaten säubern und trennen
Vorsicht beim Verketten von Methodenaufrufen
Daten in das benötigte Format umwandeln
Die Daten in ein Dictionary mit Listen umwandeln
Das Programmiermuster bei Listen erkennen
Programmiermuster in Comprehensions umwandeln
Ein genauerer Blick auf Comprehensions
Eine Dictionary-Comprehension definieren
Comprehensions mit Filtern erweitern
Pythons Weg für den Umgang mit Komplexität
Set-Comprehensions in Aktion
Und was ist mit »Tupel-Comprehensions«?
Runde Klammern um Code == Generator
URLs mit einer Listen-Comprehension verarbeiten
URLs mit einem Generator verarbeiten
Definieren Sie, was Ihre Funktion tun soll
Die Macht der Generatorfunktionen
Die Generatorfunktion aufspüren, Teil 1 von 2
Eine letzte Frage
Der Code aus Kapitel 12
Wir sind dann mal weg …
Installation
APython installieren
Das Wichtigste zuerst: Wir wollen Python auf Ihrem Computer installieren. Egal ob Sie Windows, macOS oder Linux im Einsatz haben, Python ist für Sie da. Wie das im Einzelnen geht, hängt vom verwendeten Betriebssystem ab (ja, wissen wir – eine Riesenüberraschung, oder?). Die Python-Community arbeitet hart daran, für alle beliebten Plattformen einen Installer bereitzustellen. In diesem kurzen Anhang zeigen wir Ihnen, wie Sie Python auf Ihrem Computer installieren können.
Python 3 unter Windows installieren
Python 3 unter Windows testen
Python 3 unter Windows ergänzen
Python 3 unter Mac OS X (macOS) installieren
Python 3 unter macOS konfigurieren und testen
Python 3 unter Linux installieren
PythonAnywhere
BIhre Webapplikation bereitstellen
Am Ende von Kapitel 5 haben wir behauptet, dass die Bereitstellung Ihrer Webapplikation in der Cloud nur zehn Minuten dauert. Das Versprechen wollen wir jetzt einlösen. In diesem Anhang zeigen wir Ihnen, wie Sie Ihre Webapplikation über PythonAnywhere bereitstellen können – und zwar in nur zehn Minuten. PythonAnywhere ist bei Python-Programmierern sehr beliebt, und der Grund liegt auf der Hand: Die Plattform funktioniert exakt wie erwartet, bietet großartige Unterstützung für Python (und Flask) – und das Beste daran: Sie können Ihre Webapplikation dort kostenlos unterstellen. Sehen wir uns PythonAnywhere einmal genauer an.
Schritt 0: Etwas Vorbereitung
Schritt 1: Bei PythonAnywhere registrieren
Schritt 2: Die Dateien in die Cloud hochladen
Schritt 3: Den Code extrahieren und installieren
Schritt 4: Eine Starter-Webapplikation erstellen, 1 von 2
Schritt 5: Die Webapplikation konfigurieren
Schritt 6: Drehen Sie eine Runde mit Ihrer cloudbasierten Webapplikation!
Die 10 wichtigsten Dinge, die wir nicht behandelt haben
CEs gibt immer noch etwas zu lernen
Wir hatten nie die Absicht, alles zu behandeln.
Das Ziel dieses Buchs war, Ihnen genug Python zu zeigen, um Sie möglichst schnell auf den Weg zu bringen. Wir hätten deutlich mehr behandeln können, haben wir aber nicht. Hier besprechen wir die zehn wichtigsten Dinge, die wir – auf vielleicht weiteren 600 Seiten – auch noch hätten besprechen können. Vermutlich werden Sie nicht alle davon interessieren. Trotzdem sollten Sie zumindest kurz duchblättern, um zu sehen, ob nicht doch etwas Ihren Geschmack trifft oder eine drängende Frage beantwortet. Alle in diesem Anhang besprochenen Programmiertechniken sind direkter Bestandteil von Python und dem Interpreter.
1. Was ist mit Python 2?
2. Virtuelle Programmierumgebungen
3. Mehr zur Objektorientierung
4. Formate für Strings und Ähnliches
5. Dinge sortieren
6. Mehr zur Standardbibliothek
7. Code gleichzeitig ausführen
8. GUIs mit Tkinter (und Spaß mit turtle)
9. Ohne Test ist es nicht fertig
10. Debuggen, Debuggen, Debuggen
Die 10 wichtigsten Projekte, die wir nicht behandelt haben
DNoch mehr Werkzeuge, Bibliotheken und Module
Wir wissen, was Sie beim Lesen der Überschrift gedacht haben. Warum um alles in der Welt haben die den letzten Anhang nicht einfach Die 20 wichtigsten Dinge, die wir nicht behandelt haben genannt? Warum noch mal zehn? Im vorigen Anhang haben wir uns auf Dinge beschränkt, die direkter Bestandteil von Python sind (Teile der »beiliegenden Batterien« sozusagen). In diesem Anhang werfen wir das Netz weiter aus und sprechen über eine Reihe von Technologien, die es gibt, weil es Python gibt. Hier ist viel Gutes zu entdecken, und wie beim vorigen Kapitel lohnt sich selbst das Überfliegen auf jeden Fall.
1. Alternativen zu >>>
2. Alternativen zu IDLE
3. Jupyter Notebook: die webbasierte IDE
4. Data Science betreiben
5. Technologien für die Webentwicklung
6. Mit Webdaten arbeiten
7. Noch mehr Datenquellen
8. Programmierwerkzeuge
9. Kivy: Unsere Wahl für das »coolste Projekt überhaupt«
10. Alternative Implementierungen
Mitmachen
EDie Python-Gemeinschaft
Python ist viel mehr als nur eine großartige Programmiersprache. Es ist auch eine großartige Gemeinschaft. Die Python-Gemeinschaft ist einladend, verschiedenartig, offen, freundlich, selbstlos und freigiebig. Wir wundern uns die ganze Zeit, warum das bis heute noch niemand auf eine Grußkarte gedruckt hat! Im Ernst, Python ist mehr als nur die Sprache. Um Python ist ein komplettes Ökosystem entstanden – in Form von Büchern, Blogs, Websites, Konferenzen, Treffen, Benutzergruppen und Persönlichkeiten. In diesem Anhang untersuchen wir die Python-Gemeinschaft und sehen, was sie zu bieten hat. Sitzen Sie nicht nur rum und programmieren im stillen Kämmerlein: Machen Sie mit!
Wohlwollender Diktator auf Lebenszeit
Eine tolerante Gemeinschaft: Respekt für Vielfalt
Python-Podcasts
Das Python-Zen
Welches Buch sollte ich jetzt lesen?
Unsere englischen Lieblings-Python-Bücher
Unsere deutschen Lieblings-Python-Bücher
Wenn Sie alle diese Fragen mit »Ja« beantworten können …
… ist dieses Buch etwas für Sie.
Dies ist kein Referenzwerk, und wir gehen davon aus, dass Sie bereits programmiert haben.
Wenn Sie eine dieser Fragen mit »Ja« beantworten müssen …
… ist dieses Buch nicht das richtige für Sie.
»Kann das wirklich ein seriöses Python-Buch sein?«
»Was sollen all die Abbildungen?«
»Kann ich das auf diese Weise wirklich lernen?«
Ihr Gehirn lechzt nach Neuem. Es ist ständig dabei, Ihre Umgebung abzusuchen, und es wartet auf etwas Ungewöhnliches. So ist es nun einmal gebaut, und es hilft Ihnen zu überleben.
Also, was macht Ihr Gehirn mit all den gewöhnlichen, normalen Routinesachen, denen Sie begegnen? Es tut alles in seiner Macht Stehende, damit es dadurch nicht bei seiner eigentlichen Arbeit gestört wird: Dinge zu erfassen, die wirklich wichtig sind. Es gibt sich nicht damit ab, die langweiligen Sachen zu speichern, sondern lässt diese gar nicht erst durch den »Diesist-offensichtlich-nicht-wichtig«-Filter.
Woher weiß Ihr Gehirn denn, was wichtig ist? Nehmen Sie an, Sie machen einen Tagesausflug und ein Tiger springt vor Ihnen aus dem Gebüsch: Was passiert dabei in Ihrem Kopf und Ihrem Körper?
Neuronen feuern. Gefühle werden angekurbelt. Chemische Substanzen durchfluten Sie.
Und so weiß Ihr Gehirn:
Aber nun stellen Sie sich vor, Sie sind zu Hause oder in einer Bibliothek. In einer sicheren, warmen, tigerfreien Zone. Sie lernen. Bereiten sich auf eine Prüfung vor. Oder Sie versuchen, irgendein schwieriges Thema zu lernen, von dem Ihr Chef glaubt, Sie bräuchten dafür eine Woche oder höchstens zehn Tage.
Da ist nur ein Problem: Ihr Gehirn versucht, Ihnen einen großen Gefallen zu tun. Es versucht, dafür zu sorgen, dass diese offensichtlich unwichtigen Inhalte nicht knappe Ressourcen verstopfen. Ressourcen, die besser dafür verwendet würden, die wirklich wichtigen Dinge zu speichern. Wie Tiger. Wie die Gefahren des Feuers. Wie die Notwendigkeit, schnell das Browserfenster mit dem YouTube-Video zu einer Alien-Entführung zu verbergen, wenn Ihr Chef die Nase ins Büro steckt.
Und es gibt keine einfache Möglichkeit, Ihrem Gehirn zu sagen: »Hey, Gehirn, vielen Dank, aber egal, wie langweilig dieses Buch auch ist und wie klein der Ausschlag auf meiner emotionalen Richterskala gerade ist, ich will wirklich, dass du diesen Kram behältst.«
Wir stellen uns unseren Leser als einen aktiv Lernenden vor.
Also, was ist nötig, damit Sie etwas lernen? Erst einmal müssen Sie es aufnehmen und dann dafür sorgen, dass Sie es nicht wieder vergessen. Es geht nicht darum, Fakten in Ihren Kopf zu schieben. Nach den neuesten Forschungsergebnissen der Kognitionswissenschaft, der Neurobiologie und der Lernpsychologie gehört zum Lernen viel mehr als nur Text auf einer Seite. Wir wissen, was Ihr Gehirn anmacht.
Einige der Lernprinzipien dieser Buchreihe:
Wir setzen Bilder ein. An Bilder kann man sich viel besser erinnern als an Worte allein und lernt so viel effektiver (bis zu 89 % Verbesserung bei Abrufbarkeits- und Lerntransferstudien). Außerdem werden die Dinge dadurch verständlicher. Wir setzen Text in oder neben die Grafiken, auf die sie sich beziehen, anstatt darunter oder auf eine andere Seite. Die Leser werden auf den Bildinhalt bezogene Probleme dann mit doppelt so hoher Wahrscheinlichkeit lösen können.
Wir verwenden einen gesprächsorientierten Stil mit persönlicher Ansprache. Nach neueren Untersuchungen haben Studenten nach dem Lernen bei Tests bis zu 40 % besser abgeschnitten, wenn der Inhalt den Leser direkt in der ersten Person und im lockeren Stil angesprochen hat statt in einem formalen Ton. Halten Sie keinen Vortrag, sondern erzählen Sie Geschichten. Benutzen Sie eine zwanglose Sprache. Nehmen Sie sich selbst nicht zu ernst. Würden Sie einer anregenden Unterhaltung beim Abendessen mehr Aufmerksamkeit schenken oder einem Vortrag?
Wir bringen den Lernenden dazu, intensiver nachzudenken. Mit anderen Worten: Falls Sie nicht aktiv Ihre Neuronen strapazieren, passiert in Ihrem Gehirn nicht viel. Ein Leser muss motiviert, begeistert und neugierig sein und angeregt werden, Probleme zu lösen, Schlüsse zu ziehen und sich neues Wissen anzueignen. Und dafür brauchen Sie Herausforderungen, Übungen, zum Nachdenken anregende Fragen und Tätigkeiten, die beide Seiten des Gehirns und mehrere Sinne einbeziehen.
Wir ziehen die Aufmerksamkeit des Lesers auf den Lernstoff – nachhaltig. Wir alle haben schon Erfahrungen dieser Art gemacht: »Ich will das wirklich lernen, aber ich kann einfach nicht über Seite 1 hinaus wach bleiben.« Ihr Gehirn passt auf, wenn Dinge ungewöhnlich, interessant, merkwürdig, auffällig, unerwartet sind. Ein neues, schwieriges, technisches Thema zu lernen, muss nicht langweilig sein. Wenn es das nicht ist, lernt Ihr Gehirn viel schneller.
Wir sprechen Gefühle an. Wir wissen, dass Ihre Fähigkeit, sich an etwas zu erinnern, wesentlich von dessen emotionalem Gehalt abhängt. Sie erinnern sich an das, was Sie bewegt. Sie erinnern sich, wenn Sie etwas fühlen. Nein, wir erzählen keine herzzerreißenden Geschichten über einen Jungen und seinen Hund. Was wir erzählen, ruft Überraschungs-, Neugier-, Spaß- und Was-soll-das?-Emotionen hervor und dieses Hochgefühl, das Sie beim Lösen eines Puzzles empfinden oder wenn Sie etwas lernen, das alle anderen schwierig finden. Oder wenn Sie merken, dass Sie etwas können, was dieser »Ich-bin-ein-besserer-Techniker-als-du«-Typ aus der Technikabteilung nicht kann.
Wenn Sie wirklich lernen möchten, und zwar schneller und nachhaltiger, dann schenken Sie Ihrer Aufmerksamkeit Aufmerksamkeit. Denken Sie darüber nach, wie Sie denken. Lernen Sie, wie Sie lernen.
Die meisten von uns haben in ihrer Jugend keine Kurse in Metakognition oder Lerntheorie gehabt. Es wurde von uns erwartet, dass wir lernen, aber nur selten wurde uns auch beigebracht, wie man lernt.
erinnernverstehen