⚖️ Старый подход и современная практика
⚡ Кратко: old-vs-new
Функцию передают без скобок: square, а не square().
Lambda - короткая анонимная функция из одного выражения.
Функции высшего порядка принимают или возвращают другие функции.
map() преобразует элементы, filter() отбирает элементы, reduce() сводит коллекцию к одному значению.
any() возвращает True при хотя бы одном истинном элементе.
all() возвращает True, если все элементы истинны; для пустой коллекции это True.
sorted(), min() и max() принимают key-функцию для критерия сравнения.
Сложную lambda лучше заменить именованной функцией def.
Топ-3 ошибки: передать результат функции вместо ссылки; забыть list() вокруг map/filter; писать слишком сложную lambda вместо понятной функции.
| Учебный/наивный подход | Современный вариант | Почему так |
|---|
| Создавать lambda ради любого куска логики. | Использовать lambda только для коротких выражений; сложную логику выносить в def. | Именованная функция легче читается и тестируется. |
| Печатать map/filter напрямую. | Преобразовывать итератор в list() для вывода или обходить в цикле. | map/filter ленивые и сами по себе не показывают элементы. |
| Сортировать кортежи ручными вложенными циклами. | sorted(items, key=lambda item: item[1]). | key выражает критерий сортировки напрямую. |
Проверить по документации: рекомендации по стилю и стандартной библиотеке могут уточняться в новых версиях Python.