Развернутое объяснение
Lambda‑функция (или анонимная функция) — это функция без имени, определяемая выражением вида:
lambda параметры: выражениеТакое выражение создаёт объект функции; при вызове он вычисляет указанное выражение и возвращает его результат. Пример простейшей lambda‑функции:
square = lambda x: x * x
square(5) # 25По сути это эквивалентно:
def square(x):
return x * xРазница не в «типе функции», а в формате записи: lambda — краткая запись одноразовой функции.
Основные свойства, которые важно озвучить на собеседовании:
Анонимность. Lambda‑функция не имеет имени и часто передаётся сразу как аргумент другой функции, без предварительного объявления.
Одно выражение. Внутри lambda нельзя писать несколько операторов, циклы и return; допускается только одно выражение, результат которого возвращается автоматически.
Синтаксическая компактность. Удобна, когда полноценный def выглядит избыточно.
Где lambda‑функции применяются на практике?
Классические примеры, которые любят в вопросах и задачах:
В сортировке (ключ сортировки):
users = [
{"name": "Анна", "age": 30},
{"name": "Олег", "age": 25},
]
# сортируем по возрасту
sorted_users = sorted(users, key=lambda u: u["age"])В map, filter, sorted и других функциях высшего порядка:
numbers = [1, 2, 3, 4]
# возвести все числа в квадрат
squares = list(map(lambda x: x * x, numbers))
# оставить только чётные
evens = list(filter(lambda x: x % 2 == 0, numbers))Вместо небольших одноразовых функций‑заглушек (например, в конфигурации):
handlers = {
"ping": lambda: "pong",
}В бэкенде такие конструкции встречаются реже, чем обычные def, но ты часто увидишь их при конфигурировании маршрутов, написании простых ключей сортировки и мини‑выражений для обработки коллекций.
Lambda против обычной функции - краткое сравнение, которое ожидают услышать на собеседовании:
Lambda‑функция:
определяется через lambda;
обычно не имеет имени;
может содержать только одно выражение;
используется для коротких, простых операций «на месте».
Обычная функция (def):
имеет имя;
может содержать несколько строк кода, условия, циклы, return;
подходит для любой нетривиальной логики и повторного использования.
На курсах в TeoBrain мы показываем, где lambda‑функция помогает сделать код компактнее (например, при сортировке), а где использование def даёт гораздо более читаемый и поддерживаемый код, что особенно важно в продакшн‑бэкенде.