Funktionale Programmierung in der Praxis

Konzepte von Programmierparadigmen

Eleanor Thomas

Senior Data Analytics Engineer

Funktionale Programmierung in der Praxis

  • Drei Beispiele für reine Funktionen
  • Hauptunterschied zwischen einer reinen Funktion und einer allgemeinen Python-Funktion: keine Seiteneffekte
  • Reine Funktionen können andere reine Funktionen aufrufen und bleiben rein

Zeichenbrett

Konzepte von Programmierparadigmen

Beispiel 1 – Eine reine Funktion schreiben

def square_list(input_list):
    new_list = []

for item in input_list:
new_item = item ** 2
new_list.append(new_item)
return new_list
  • Zuerst eine neue, leere Liste erstellen
  • Jedes Element der Eingabeliste durchgehen
    • Quadrieren
    • Zur neuen Liste hinzufügen
  • Neue Liste zurückgeben
Konzepte von Programmierparadigmen

Beispiel 2 – Eine „unreine“ Funktion korrigieren

sample_mean = 10
scale_factor = 2

def scale_list(input_list):
    new_list = []
    for item in input_list:
        new_item = (item - sample_mean) / scale_factor
        new_list.append(new_item)
    return new_list
  • Hängt von Variablen außerhalb des Funktionskörpers ab
  • Keine reine Funktion
Konzepte von Programmierparadigmen

Beispiel 2 – „Unreine“ Funktion korrigiert

def scale_list(input_list, sample_mean, scale_factor):
    new_list = []
    for item in input_list:
        new_item = (item - sample_mean) / scale_factor
        new_list.append(new_item)
    return new_list
  • Die Variablen sample_mean und scale_factor sind jetzt Eingabeparameter der Funktion
  • Die Funktion ist jetzt „rein“
Konzepte von Programmierparadigmen

Beispiel 3 – Reine Funktionen kombinieren

def scale_value(value, sample_mean, scale_factor):
    scaled_value = (value - sample_mean) / scale_factor
    return scaled_value

def scale_list(input_list, sample_mean, scale_factor):
    new_list = []
    for item in input_list:
        new_item = scale_value(item, sample_mean, scale_factor)
        new_list.append(new_item)
    return new_list
Konzepte von Programmierparadigmen

Lass uns üben!

Konzepte von Programmierparadigmen

Preparing Video For Download...