Короткий ответ
lambda — это способ создать анонимную функцию: функцию без имени, состоящую из одного выражения. Синтаксис выглядит как lambda аргументы: выражение, а результат выражения автоматически становится возвращаемым значением.
Как это работает подробнее
Лямбда может принимать любое количество аргументов, но её тело ограничено одним выражением, поэтому в нём не может быть операторов.
- Одно выражение. В отличие от
def, вlambdaнельзя разместитьif-блок, цикл или явныйreturn— значение вычисляется из единственного выражения. - Функциональный объект. Выражение создаёт новый объект функции, который сразу возвращается и может быть сохранён в переменную или передан как аргумент.
- Место применения. Чаще всего лямбды передают в функции высшего порядка —
map(),filter(),sorted()через параметрkey— когда функция нужна один раз. - Ограничения. В лямбде нет аннотаций типов и операторов, поэтому для сложной логики она не подходит.
Пример кода
Простая лямбда-функция
double = lambda x: x * 2
print(double(5)) # 10
print((lambda x, y: x + y)(3, 4)) # 7Что использовать на практике
- Функции высшего порядка. Используй лямбду, когда короткая функция нужна один раз — например, как
keyвsorted(). - Короткие преобразования. Для простых однострочных преобразований в
map()и фильтров вfilter()лямбда читается лучше, чем отдельныйdef. - Обычный def. Как только логика усложняется или функция переиспользуется, объявляй именованную функцию через
def— это удобнее для чтения и тестирования.