Informationen zur Technologie

Python ist eine universelle, höhere Programmiersprache, die gut lesbar ist. Sie unterstützt mehrere Programmierparadigmen, wie die objektorientierte, die funktionale und die aspekt-orientierte Programmierung und bietet eine dynamische Typisierung. Sie wird oft als Skriptsprache eingesetzt.


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

    offene Schulung
    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.
    Firmenschulung
    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:
    • Hamburg
    • Berlin
    • Frankfurt
    • München
    • Nürnberg
    • Düsseldorf
    • Wien
    Starttermin:individuelle Vereinbarung
    Unterlagen:zzgl.
    Verpflegung:zzgl.
    Prüfung/Zertifizierung:zzgl.

    Software

    python3, anaconda3, pip, pyenv, vscode,



    Seminarsprache

    die Seminarsprache ist deutsch, sofern keine andere Angabe. Englisch ist in aller Regel machbar, andere Seminarsprachen sind möglich, fragen Sie bitte an.