1. Vorwort
Das PDF dieses Dokuments ist |HIER| verfügbar.
Die Beispiele in diesem Dokument sind |HIER| verfügbar.
Dieses Dokument enthält eine Liste von Python-Skripten aus verschiedenen Bereichen:
- die Grundlagen der Sprache;
- MySQL- und PostgreSQL-Datenbankverwaltung;
- TCP/IP-Netzwerkprogrammierung (HTTP-, POP3-, IMAP- und SMTP-Protokolle);
- MVC-Webprogrammierung mit dem FLASK-Framework;
- dreistufige Architekturen und interfacebasierte Programmierung;
Dies ist kein umfassender Python-Kurs, sondern eine Sammlung von Beispielen, die sich an Entwickler richtet, die bereits Erfahrung mit einer Skriptsprache wie Perl, PHP oder VBScript haben, oder an Entwickler, die an typisierte Sprachen wie Java oder C# gewöhnt sind und Interesse daran haben, eine objektorientierte Skriptsprache kennenzulernen. Dieses Dokument ist für Leser mit wenig oder gar keiner Programmiererfahrung nicht geeignet.
Ebenso wenig ist dieses Dokument eine Sammlung von „Best Practices“. Erfahrene Entwickler werden vielleicht feststellen, dass einige der Codezeilen eleganter geschrieben werden könnten. Der einzige Zweck dieses Dokuments besteht darin, Beispiele für diejenigen bereitzustellen, die Python 3 und das Flask-Framework erlernen möchten. Sie können ihr Verständnis anschließend mithilfe anderer Ressourcen vertiefen.
Die Skripte sind kommentiert, und die Ergebnisse ihrer Ausführung werden angezeigt. Manchmal werden zusätzliche Erläuterungen gegeben. Dieses Dokument erfordert aktives Lesen: Um ein Skript zu verstehen, müssen Sie dessen Code, die Kommentare und die Ausführungsergebnisse lesen.
Die Beispiele in diesem Dokument sind |HIER| verfügbar:

Dieses Dokument ist eine Aktualisierung eines älteren Dokuments, das im Juni 2011 veröffentlicht wurde |https://tahe.developpez.com/tutoriels-cours/python/|. Das Dokument von 2011 wurde mit dem Python-2.7-Interpreter erstellt. Seitdem wurden Python-3.x-Versionen veröffentlicht. Stand Februar 2020 ist die aktuelle Version 3.8. Die 3.x-Versionen haben zu einer Unterbrechung der versionenübergreifenden Kompatibilität geführt: Code, der unter Python 2.7 läuft, funktioniert unter Python 3.x möglicherweise nicht. Dies gilt insbesondere für die Konsolenausgabe. In 2.7 kann man [print "toto"] schreiben, während man in 3.x [print("toto")] schreiben muss: Klammern sind erforderlich. Diese einfache Änderung bedeutet, dass der Großteil des im Dokument von 2011 bereitgestellten Codes nicht direkt mit Python 3.x verwendet werden kann. Er muss angepasst werden.
Dieses neue Dokument tut mehr, als nur den Code von 2011 zu aktualisieren, damit er unter Python 3.8 ausgeführt werden kann:
- Die Abschnitte zur TCP/IP-Programmierung und zur Datenbanknutzung wurden erheblich überarbeitet;
- der Abschnitt über Webprogrammierung, der zuvor nur eine Einführung war, ist nun ein vollständiger Kurs unter Verwendung des Flask-Frameworks;
Bei der Erstellung dieses Kurses bin ich einen unkonventionellen Weg gegangen: Ich habe den PHP-Kurs [Einführung in PHP 7 anhand von Beispielen] portiert. Daher habe ich mich nicht an die üblichen Strukturen von Python- oder Flask-Kursen gehalten. Vor allem wollte ich herausfinden, wie ich in Python 3 das umsetzen kann, was ich in PHP 7 gemacht habe. Das Ergebnis ist, dass es mir gelungen ist, alle Beispiele aus dem PHP-7-Kurs in Python 3 / Flask nachzubilden.
Dieses Dokument kann Fehler oder Auslassungen enthalten. Leser können diese über den Diskussions-Thread |forum| melden.
Der Inhalt des Dokuments ist wie folgt:
Kapitel | Code-Repository | Inhalt |
Kursübersicht | ||
Einrichten einer Arbeitsumgebung | ||
[Grundlagen] | Die Grundlagen der Programmiersprache Python – Sprachstrukturen – Datentypen – Funktionen – Konsolenausgabe – Formatzeichenfolgen – Typkonvertierung – Listen – Wörterbücher – reguläre Ausdrücke | |
[Zeichenketten] | Zeichenfolgen-Notation – Methoden der Klasse <str> – Kodierung/Dekodierung Zeichenfolgen in UTF-8 | |
[Ausnahmen] | Ausnahmebehandlung | |
[Funktionen] | Variablengültigkeitsbereich – Parameter – Verwendung von Modulen – Der Python-Pfad – Benannte Parameter – Rekursive Funktionen | |
[Dateien] | Lesen/Schreiben einer Textdatei – Umgang mit UTF-8-kodierten Dateien – Umgang mit JSON-Dateien | |
[taxes/v01] | Version 1 der Anwendung Übung: Berechnung der Einkommensteuer . Die Anwendung ist in 18 Versionen – Version 1 implementiert eine prozedurale Lösung | |
[Importe] | Verwaltung von Anwendungsabhängigkeiten durch Importieren von – eine Methode zur Verwaltung von Abhängigkeiten Verwaltungsmethode wird vorgestellt – sie wird im gesamten Dokument verwendet – Verwaltung des Python-Pfads | |
[impots/v02] | Version 2 der Anwendung baut auf Version 1 auf, indem sie alle Konfigurationskonstanten in einer Konfigurationsdatei, die zudem den Python-Pfad verwaltet | |
[imports/v03] | Version 3 der Anwendung baut auf Version 2 auf, indem sie Funktionen, die in einem Modul – die wird über die Konfiguration – Einführung einer JSON-Datei zum Einlesen der für für die Steuerberechnung und zum Schreiben der Berechnungsergebnisse | |
[Klassen/01] | Klassen – Vererbung – Methoden und Eigenschaften – Getter/Setter – Konstruktor – [__dict__] Eigenschaft | |
[Klassen/02] | Einführung in die Klassen [BaseEntity] und [MyException] im weiteren Verlauf des Dokuments – [BaseEntity] erleichtert Objekt-/Dictionary- Konvertierungen | |
[drei-Schichten] | Schichtarchitektur und schnittstellenbasierte Programmierung. Dieses Kapitel stellt die Programmiermethoden im weiteren Verlauf des Dokument | |
[taxes/v04] | Version 4 der Anwendung – diese Version implementiert eine Lösung mit einer mehrschichtigen Architektur sowie der Verwendung von Klassen, die von [BaseEntity] und [MyException] | |
[Datenbanken/MySQL] | Installation des MySQL-DBMS – Verbindung zu einer Datenbank herstellen – Erstellen einer Tabelle – Ausführen von SELECT-, UPDATE-, DELETE- und INSERT-SQL-Anweisungen – Transaktionen – parametrisierte SQL-Abfragen | |
[Datenbanken/PostgreSQL] | Installation des PostgreSQL-DBMS – Verbindung zu einer Datenbank herstellen – Erstellen einer Tabelle – Ausführen von SELECT-, UPDATE-, DELETE- und INSERT-SQL-Anweisungen – Transaktionen – parametrisierte SQL-Abfragen | |
[Datenbanken/beliebiges DBMS] | DBMS-unabhängigen Code schreiben | |
[Datenbanken/SQLAlchemy] | Das SqlAlchemy-ORM (Object- Relational Mapper) – ein ORM ermöglicht einen einheitlichen Ansatz für die Arbeit mit verschiedenen DBMS – Zuordnung von Klassen zu SQL-Tabellen – Operationen auf Klassen , die SQL-Tabellen repräsentieren | |
[taxes/v05] | Version 5 der Steuerberechnungs- – Verwendung der mehrschichtigen Architektur aus Version 04 und dem SqlAlchemy-ORM für die mit MySQL und PostgreSQL DBMS | |
[inet] | Webprogrammierung – TCP/IP Protokoll (Transmission Control / Internetprotokoll) – HTTP-Protokolle (HyperText Transfer Protocol) – SMTP (Simple Mail Transfer Protocol) – POP (Post Office Protocol) – IMAP (Internet Message Access Protocol) | |
[flask] | Webdienste mit dem Flask-Web-Framework Framework – Anzeigen einer HTML-Seite – JSON-Webdienst – GET- und POST-Anfragen – Verwaltung einer Websitzung | |
[impots/http-servers/01] [taxes/http-clients/01] | Version 6 der Anwendung Übung – Erstellen eines JSON-Webdienstes Service zur Steuerberechnung mit einer mehrschichtigen Architektur – Schreiben eines Web-Clients für diesen Server mit einer Mehrschichtarchitektur – Client/Server-Programmierung – Verwendung des Moduls [requests] | |
[taxes/http-servers/02] [Steuern/HTTP-Clients/02] | Version 7 der Anwendung Übung – Version 6 wurde verbessert: Client und Server sind multithreaded – [Logger] Dienstprogramme zur Protokollierung von Client-/Server- – [SendMail] zum Versenden einer E-Mail an den Administrator | |
[taxes/http-servers/03] [Steuern/HTTP-Clients/03] | Version 8 der Anwendung Übung – Version 7 wurde verbessert durch die Verwendung einer Web-Sitzung | |
[xml] | XML (eXtended Markup Language) mit dem [xmltodict]-Modul | |
[taxes/http-servers/04] [impots/http-clients/04] | Version 9 der Anwendung Übung – Version 8 wird angepasst um Client/Server- Austausch in XML; | |
[taxes/http-servers/05] [Steuern/HTTP-Clients/05] | Version 10 der Anwendung Übung – statt N Steuerzahler über N GET-Anfragen zu verarbeiten, wird eine einzige POST-Anfrage mit den N Steuerzahlern im POST- Body | |
[taxes/http-servers/06] [Steuern/HTTP-Clients/06] | Übung zur Version 11 der Anwendung Übung – die Client-Server-Architektur der Anwendung geändert: Die [Business]-Schicht wird vom Server auf den Client | |
[Steuern/HTTP-Server/07] | Version 12 der Anwendung Übung – diese Version implementiert einen MVC-Server (Model–View– Controller)-Server, der JSON, XML und HTML , je nach Anfrage des Clients. Dieses Kapitel implementiert die JSON- und XML- des Servers | |
[impots/http-clients/07] | Implementierung der JSON- und XML-Clients für den MVC-Server in Version 12 | |
[impots/http-servers/07] | Implementierung des HTML-Servers in Version 12 – unter Verwendung des Bootstrap-CSS-Frameworks – | |
[impots/http-servers/08] | Version 13 der Anwendung – Refactoring des Codes aus Version 12 – Verwaltung der Sitzungen mit dem [flask_session]-Moduls und eines Redis-Server – Verwendung verschlüsselter Passwörtern | |
[impots/http-server/09] [Importe/HTTP-Clients/09] | Übung zur Version 14 der Anwendung Übung – Implementierung von URLs mit einem CSRF-Token (Cross-Site Request Forgery) | |
[impots/http-servers/10] | Version 15 der Anwendung Übung – Refactoring des Codes aus Version 14, um zwei Aktionsarten: ASV (Action Show View), die nur dazu dienen dazu dient, eine Ansicht anzuzeigen, ohne den Zustand des Servers zu verändern, und ADS (Action Do Something), die eine Aktion ausführen, die den Zustand des Servers verändert – diese Aktionen enden alle mit einer Weiterleitung zu einer ASV-Aktion – dies ermöglicht korrekte Behandlung von Seitenaktualisierungen im Client-Browser | |
[impots/http-servers/11] | Version 16 der Anwendung – URL-Verwaltung mit Präfixen | |
[impots/http-servers/12] | Version 17 der Anwendung – Portierung von Version 16 auf einen Apache/Windows-Server | |
[impots/http-servers/13] | Version 18 der Anwendung – behebt einen Fehler in Version 17 |
Die endgültige Version der Anwendungsübung ist eine Client/Server-Anwendung zur Steuerberechnung mit folgender Architektur:

Die obige [Web]-Schicht ist unter Verwendung einer MVC-Architektur implementiert:

Der Inhalt dieses Dokuments ist sehr umfangreich. Leser, die es bis zum Ende durcharbeiten, werden ein solides Verständnis der MVC-Webprogrammierung in Python/Flask und darüber hinaus ein solides Verständnis der MVC-Webprogrammierung in anderen Sprachen erlangen.
Leser, die es vorziehen, den Code anzusehen, zu testen und zu ändern, anstatt einen Vortrag zu lesen, können wie folgt vorgehen:
- Richten Sie eine Entwicklungsumgebung ein:
- einen Python-Interpreter;
- die PyCharm Community IDE;
- Laragon (Apache-Server, MySQL-DBMS, Redis-Server);
- die PostgreSQL-Datenbank;
- den Postman-HTTP-Client;
- der hMailServer-Mailserver;
- Sehen Sie sich den Code in den Beispielen |HIER| an:

- In jedem Ordner befindet sich eine [README.md]-Datei, die den Ordner mit einem Kapitel des Kurses verknüpft und dessen Inhalt zusammenfasst:
Die [README.md]-Datei sieht wie folgt aus:

Es ist unwahrscheinlich, dass der Leser den gesamten Kurs durchliest:
- Ein Anfänger liest vielleicht die Kapitel 1 bis 15 und hört dann auf. Er kann dann Zeit damit verbringen, eigene Python-Skripte zu programmieren, bevor er zu diesem Kurs zurückkehrt;
- Leser mit Grundkenntnissen in Python, die mehr über Datenbanken und ORM (Object Relational Mapper) [SQLAlchemy] erfahren möchten, finden möglicherweise die Kapitel 16 bis 20 ausreichend;
- Leser, die Webprogrammierung (HTTP, SMTP, POP3, IMAP) erlernen möchten, können Kapitel 21 lesen. Dieses Kapitel ist recht komplex und behandelt fortgeschrittene Skripte. Es kann auf zwei Ebenen gelesen werden:
- um mehr über Internetprotokolle zu erfahren;
- um Skripte zu erhalten, die diese Protokolle nutzen;
- Leser mit Grundkenntnissen in Python, die Webprogrammierung mit dem Flask-Framework erlernen möchten, sollten Kapitel 22 lesen;
- Leser, die tiefer in die Webprogrammierung mit dem Flask-Framework einsteigen möchten, können die Kapitel 23 bis 38 studieren. Diese Kapitel behandeln die Entwicklung zunehmend komplexer Client-Server-Anwendungen sowie eine HTML/Python-Anwendung nach dem MVC-Entwicklungsmuster (Model–View–Controller). Diese Anwendung wird in Kapitel 32 entwickelt. Sie können an dieser Stelle aufhören. Die folgenden Kapitel führen nicht grundlegende Änderungen ein;
Serge Tahé, September 2020