Я собирался начать делать посты в обед (обычно днём людям удобнее читать, чем с утра), но забыл. Так что сегодня у нас пост сразу о двух полезных модулях. Речь пойдёт о функциональном программировании.
Первая библиотека даёт возможность использовать цепочки вычислений, причём методы там поддерживаются на любой вкус, а не только map-filter-reduce. К тому же, есть в ней ленивые вычисления, параллельность, кеширование, экспорт и импорт в разные форматы. В общем, сделано как надо. Возможно, я когда-нибудь найду время и интегрирую её в менеджер объектов Django) https://github.com/EntilZha/PyFunctional
Ну а вторая содержит в себе:
- сокращенную запись lambda-выражений,
- immutable-объекты для гарантированно чистых функций,
- хак для рекурсивных функций любой глубины
- набор полезных функций по типу методов из предыдущей библиотеки. https://github.com/kachayev/fn.py
Ну и бонусом кое-что из стандартной библиотеки, не столь известное, как functools: https://docs.python.org/3/library/operator.html
Гвидо ван Россум пусть и не любит функциональщину, но не добавил он это всё в питон не из вредности, а ради сохранения хорошей читаемости кода и низкого порога вхождения. Поэтому при использовании таких штук (и вообще каждую минуту своей жизни) помните: этот код ещё предстоит кому-то сопровождать.