Python: Декларативное программирование
Теория: Введение
Когда говорят о декларативном коде, разговор быстро уходит в теорию. На практике все проще: мы описываем результат и преобразование данных, а не расписываем вручную каждый шаг программы.
При работе с данными в Python очень легко уйти в одну из крайностей. Либо код превращается в длинную цепочку шагов, где приходится держать в голове каждое промежуточное состояние. Либо, наоборот, все собирается в слишком хитрое выражение, которое выглядит компактно, но читается уже с усилием. В этом и состоит основная проблема: декларативный стиль полезен не сам по себе, а только тогда, когда действительно упрощает решение.
В Python такой подход встречается постоянно. Генераторы списков, генераторные выражения, map(), filter(), set() и dict() помогают собирать обработку данных в понятные цепочки. Такой код часто короче и читается быстрее. Но у этого стиля есть границы: иногда явный цикл, изменяемое состояние или yield дают более честное и удобное решение.
В курсе мы начнем с разговора о разнице между императивным и декларативным подходами, а затем разберем функциональный стиль в Python на реальных конструкциях языка. Посмотрим, как работают генераторы списков, словарей и множеств, где полезны генераторные выражения, зачем нужны ленивые вычисления и в каких случаях стоит писать генераторные функции.
По ходу курса будем сравнивать компактные декларативные решения с более привычным пошаговым кодом. Это важная часть материала: в Python редко побеждает одна крайность. Обычно хороший вариант находится посередине, когда код и читается нормально, и не тратит лишние ресурсы.
Для кого этот курс
Этот курс для тех, кто уже уверенно знает базовый синтаксис Python, функции и встроенные коллекции, но хочет писать код для обработки данных короче и чище. Он подойдет тем, кто хочет разобраться, когда стоит использовать генераторы и декларативные конструкции, а когда лучше остановиться и написать обычный цикл без лишней хитрости.

