Python 3.8 - Funktionale Programmierung - Schulung (3 Tage)
Kurzbeschreibung
In dieser Python 3.8-Schulung lernen Programmierer das funktionale Arbeiten kennen. Nach einer Einführung in die Funktionskonzepte, die Funktionen, Iteratoren und Generatoren werden folgende Themen behandelt: die explorative Datenanalyse, die Lambda-Ausdrücke, die Funktionen höherer Ordnung, zusätzliche Tupeltechniken, die Dekorateur-Design-Techniken, die Rekursionen und Reduzierungen, die Verwendung des Itertools-, des Functools-, des Multiprocessing-, des Threading- und des Operator-Moduls, die PyMonad-Bibliothek sowie Optimierungen und Verbesserungen.
Voraussetzungen
• keine
Seminarinhalt
Übersicht über die funktionale Programmierung
• Einführung
• Funktionale Programmierung als Paradigma
• Ein klassisches Beispiel für eine funktionale Programmierung
Einführung in wesentliche Funktionskonzepte
• First-class functions
• Immutable data
• Strict und non-strict evaluation
• Rekursion anstelle eines expliziten Schleifenzustands
• Functional type systems
• Einige fortgeschrittene Konzepte
Funktionen, Iteratoren und Generatoren
• Schreiben der pure functions
• Funktionen als first-class Objekte
• Arbeiten mit Strings
• Verwendung von Tupeln und benannten Tupeln
• Bereinigung von Rohdaten mit Generatorfunktionen
• Verwendung von Listen, Diktaten und Sets
Arbeiten mit Collections
• Arbeiten mit Sammlungen auf funktionale Weise
• Ein Überblick über Funktionsvarianten
• Arbeiten mit iterables
• Verwendung von zip() zum Strukturieren und Reduzieren von Sequenzen
• Verwendung von reverse() zur Änderung der Reihenfolge
• Verwendung von enumerate() zum Einschließen einer Sequenznummer
Explorative Datenanalyse
Callables (Routinen im Vergleich)
• Benannte Funktionen vs. Lamdas
• Mehrfach Dispatch
Lazy Evaluation (späte Bindung/späte Ausführung)
Lambda Ausdrücke
• Lambdas und der Lambda-Kalkül
Funktionen höherer Ordnung
• Die Bedeutung von Funktionen höherer Ordnung
• Verwendung von max() und min() zum Finden von Extrema
• Verwendung der Funktion map() zur Anwendung einer Funktion auf eine Sammlung
• Verwendung von map() mit mehreren Sequenzen
• Verwendung der Funktion filter() zum Übergeben oder Zurückweisen von Daten
• Verwendung von filter() zur Identifizierung von Ausreißern
• Die iter() -Funktion mit einem Sentinel-Wert
• Verwendung von sorted() zum Berichtigen von Daten
• Schreiben von Funktionen höherer Ordnung
• Schreiben von Zuordnungen und Filtern höherer Ordnung
• Das Schreiben von Generatorfunktionen
• Erstellung von Funktionen höherer Ordnung mit Callables
Rekursionen und Reduzierungen
• Rekursionsalgorithmen
• Datenreduktionen
• Einfache numerische Rekursionen
• Reduzierung nach Gruppen von vielen Elementen auf weniger
Zusätzliche Tupel-Techniken
• Verwendung von Tupel zum Sammeln von Daten
• Verwendung benannter Tupel zum Sammeln von Daten
• Erstellung benannter Tupel mit funktionalen Konstruktoren
• Vermeidung zustandsbehafteter Klassen mit der Verwendung von Tupelfamilien
• Polymorphismus und Typmusterabgleich
Das Itertools-Modul
• Arbeiten mit den unendlichen Iteratoren
• Verwendung der endlichen Iteratoren
• Klonen von Iteratoren mit tee ()
• Die itertools Rezepte
• Aufzählung des kartesischen Produkts
• Die Reduzierung eines Produkts
• Zulassung einer Sammlung von Werten
• Generierung aller Kombinationen
Das Functools-Modul
• Funktionswerkzeuge
• Speicherung früherer Ergebnisse mit lru_cache
• Definierung von Klassen mit Gesamtbestellung
• Anwendung von Teilargumenten mit partiell ()
• Reduzierung von Datensätzen mit der Funktion redu ()
Dekorateur-Design-Techniken
• Dekorateure als Funktionen höherer Ordnung
• Querschnittsthemen
• Verbunddesign
• Das Hinzufügen eines Parameters zu einem Dekorateur
• Implementierung komplexerer Dekorateure
• Komplexe Designüberlegungen
Die Multiprocessing- und Threading-Module
• Funktionale Programmierung und Parallelität
• Die wirkliche Bedeutung der Parallelität
• Verwendung von Multiprozessor-Pools und Aufgaben
• Verwendung eines Multiprozessor-Pools für die gleichzeitige Verarbeitung
Bedingte Ausdrücke und das Operatormodul
• Auswertung bedingter Ausdrücke
• Verwendung des Bedienmoduls anstelle von Lambdas
• Starmapping mit Bedienern
• Reduzierung mit Bedienermodulfunktionen
Gemeinsame funktionale Entwurfsmuster
• Currying - Ein Argument pro Funktion
• Monaden - Variablen, die entscheiden, wie sie behandelt werden sollen
• Memoization - Speicherung der Ergebnisse
Currying
• Ein Argument pro Funktion
Die PyMonad-Bibliothek
• Das Herunterladen und das Installieren
• Funktionale Zusammensetzung und Curry
• Funktionale Zusammensetzung und der PyMonad * -Operator
• Funktoren und anwendbare Funktoren
• Monad bind () Funktion und der >> Operator
• Implementierung einer Simulation mit Monaden
• Zusätzliche PyMonad Funktionen
Optimierungen und Verbesserungen
• Optimierungen und Verbesserungen
• Auswendiglernen und Zwischenspeichern
• Spezialisierte Memoisierung
• Optimierungen der Tail-Rekursion
• Optimierung des Speichers
• Optimierung der Genauigkeit
• Fallstudie - Treffen einer Chi-Quadrat-Entscheidung
• Berechnung der erwarteten Werte und Anzeige einer Kontingenztabelle
• Funktionsmuster für die Programmierung
Zielgruppen
• Python Programmierer
Preise und Termine
Eine offene Schulung findet in einem unserer Schulungszentren statt.
Dauer: | 3 Tage |
Preis: | 1.350,00 € zzgl. USt. pro Teilnehmer (1.606,50€ inkl. USt.) |
Seminarstandorte: | |
Starttermine: (ortsabhängig) | |
Unterlagen: | zzgl. |
Verpflegung: | zzgl. |
Prüfung/Zertifizierung: | zzgl. |
Eine Firmenschlung kann sowohl bei Ihnen vor Ort als auch in einem unserer Schulungszentren stattfinden.
Dauer: | 3 Tage |
Preis ab: | 1.350,00 € zzgl. USt. pro Tag (1.606,50€ inkl. USt.) |
Schulungszentren: |
|
Starttermin: | individuelle Vereinbarung |
Unterlagen: | zzgl. |
Verpflegung: | zzgl. |
Prüfung/Zertifizierung: | zzgl. |
Software
python3, anaconda3, pip, pyenv, vscode,
Verwandte Schulungen
Python 3.8 für Experten - SchulungPython 3.8 - Einführung mit Eclipse PyDev - SchulungPython 3.8 - Clean Code - Schulung
Seminarsprache
Wir bieten unsere Seminare hauptsächlich in deutscher Sprache an – je nach Wunsch aber gerne auch in Englisch oder einer anderen Seminarsprache. Bitte fragen Sie doch einfach bei uns an.