Programowanie funkcyjne w praktyce

Koncepcje paradygmatów programowania

Eleanor Thomas

Senior Data Analytics Engineer

Programowanie funkcyjne w praktyce

  • Trzy przykłady czystych funkcji
  • Kluczowa różnica między funkcją czystą a zwykłą funkcją Pythona: brak efektów ubocznych
  • Czyste funkcje mogą wywoływać inne czyste funkcje i pozostawać czystymi

Tablica

Koncepcje paradygmatów programowania

Przykład 1 – Pisanie czystej funkcji

def square_list(input_list):
    new_list = []

for item in input_list:
new_item = item ** 2
new_list.append(new_item)
return new_list
  • Utwórz nową, pustą listę
  • Przejdź przez każdy element listy wejściowej
    • Podnieś do kwadratu
    • Dołącz do nowej listy
  • Zwróć nową listę
Koncepcje paradygmatów programowania

Przykład 2 – Poprawianie funkcji „nieczystej"

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
  • Zależy od zmiennych spoza ciała funkcji
  • Nie jest czystą funkcją
Koncepcje paradygmatów programowania

Przykład 2 – Poprawiona funkcja „nieczysta"

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
  • Zmienne sample_mean i scale_factor stały się parametrami wejściowymi funkcji
  • Funkcja jest teraz „czysta"
Koncepcje paradygmatów programowania

Przykład 3 – Łączenie czystych funkcji

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
Koncepcje paradygmatów programowania

Czas na ćwiczenia!

Koncepcje paradygmatów programowania

Preparing Video For Download...