Глава 13 · Автоматизация с помощью функций

Лямбда-функции

Маленькие безымянные функции в одну строку — удобны в конкретных, узких случаях.

Лямбда-функция — это способ создать маленькую безымянную функцию в одну строку. Тот же результат, что и через def, но короче:

lambda.py
kvadrat = lambda x: x ** 2
print(kvadrat(5))   # 25

Слева от двоеточия — параметры (без скобок), справа — единственное выражение, результат которого автоматически возвращается (без явного return).

Где лямбда действительно полезна

Чаще всего лямбда-функции передают как аргумент в другую функцию — например, чтобы задать правило сортировки:

lambda_sortirovka.py
slova = ["python", "я", "программирование"]
slova.sort(key=lambda word: len(word))
print(slova)   # ["я", "python", "программирование"] — от короткого к длинному
Простая функция: def → lambda
Обычная функция (def)
def kvadrat(x):
    return x ** 2

print(kvadrat(5))
Лямбда-функция
kvadrat = lambda x: x ** 2

print(kvadrat(5))
Что использовать сегодня: обычную функцию с def — она читается яснее, у неё есть нормальное имя для отладки, и в неё легко добавить несколько строк логики или комментарий. lambda удобна только для одной короткой строки без имени — например, как аргумент функции sorted() или max(). Использовать lambda ради самой lambda, когда подошла бы обычная функция, — плохой стиль, а не «более современный».
Практика в Jupyter Notebook
13-06-lambda.ipynb · лямбда-функции на практике
Открыть ноутбук →