Functioneel programmeren in de praktijk

Concepten van programmeerparadigma’s

Eleanor Thomas

Senior Data Analytics Engineer

Functioneel programmeren in de praktijk

  • Drie voorbeelden van pure functies
  • Belangrijk verschil tussen een pure functie en een gewone Python-functie: geen neveneffecten
  • Pure functies kunnen andere pure functies aanroepen en blijven puur

Tekenbord

Concepten van programmeerparadigma’s

Voorbeeld 1 - Een pure functie schrijven

def square_list(input_list):
    new_list = []

for item in input_list:
new_item = item ** 2
new_list.append(new_item)
return new_list
  • Maak eerst een nieuwe, lege lijst
  • Loop door elk item in de invoerlijst
    • Kwadrateer het
    • Voeg het toe aan de nieuwe lijst
  • Geef de nieuwe lijst terug
Concepten van programmeerparadigma’s

Voorbeeld 2 - Een “onreine” functie corrigeren

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
  • Hangt af van variabelen buiten de functie
  • Geen pure functie
Concepten van programmeerparadigma’s

Voorbeeld 2 - "Onreine" functie gecorrigeerd

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
  • Variabelen sample_mean en scale_factor zijn invoerparameters van de functie
  • Functie is nu “puur”
Concepten van programmeerparadigma’s

Voorbeeld 3 - Pure functies combineren

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
Concepten van programmeerparadigma’s

Laten we oefenen!

Concepten van programmeerparadigma’s

Preparing Video For Download...