Функциональное программирование на практике

Концепции парадигм программирования

Eleanor Thomas

Senior Data Analytics Engineer

Функциональное программирование на практике

  • Три примера чистых функций
  • Ключевое отличие чистой функции от обычной функции Python: отсутствие побочных эффектов
  • Чистые функции могут вызывать другие чистые функции и оставаться чистыми

Доска для записей

Концепции парадигм программирования

Пример 1 — Написание чистой функции

def square_list(input_list):
    new_list = []

for item in input_list:
new_item = item ** 2
new_list.append(new_item)
return new_list
  • Создаём новый пустой список
  • Перебираем каждый элемент входного списка
    • Возводим в квадрат
    • Добавляем в новый список
  • Возвращаем новый список
Концепции парадигм программирования

Пример 2 — Исправление «нечистой» функции

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
  • Зависит от переменных, определённых вне тела функции
  • Не является чистой функцией
Концепции парадигм программирования

Пример 2 — «Нечистая» функция исправлена

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
  • Переменные sample_mean и scale_factor стали входными параметрами функции
  • Теперь функция является «чистой»
Концепции парадигм программирования

Пример 3 — Комбинирование чистых функций

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
Концепции парадигм программирования

Давайте потренируемся!

Концепции парадигм программирования

Preparing Video For Download...