Что такое лямбда-функция? Какое у неё назначение?
🔹 Что такое лямбда-функция?
Лямбда-функция (или анонимная функция) — это однострочная функция, определяемая без имени, с помощью ключевого слова lambda.
Она используется для создания коротких, простых функций прямо "на месте", особенно там, где неудобно или избыточно определять полноценную функцию через def.
🔸 Общий синтаксис:
lambda аргументы: выражение
-
lambda — ключевое слово.
-
аргументы — один или несколько параметров.
-
выражение — возвращаемое значение (только одно выражение, без двоеточий, return, циклов и т.д.).
🔹 Примеры лямбда-функций:
✅ Пример 1: простая лямбда
f = lambda x: x + 1
print(f(5)) # 6
То же самое с def:
def f(x):
return x + 1
✅ Пример 2: несколько аргументов
add = lambda x, y: x + y
print(add(2, 3)) # 5
✅ Пример 3: без присваивания имени
print((lambda x: x \* x)(4)) # 16
🔹 Где применяются лямбда-функции?
Обычно — там, где требуется короткая функция как аргумент, особенно в комбинации с такими встроенными функциями и методами:
🔸 1. Функция sorted() с key=
words = \['banana', 'apple', 'kiwi'\]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # \['kiwi', 'apple', 'banana'\]
🔸 2. Функция map()
nums = \[1, 2, 3\]
squares = list(map(lambda x: x\*\*2, nums))
print(squares) # \[1, 4, 9\]
🔸 3. Функция filter()
nums = \[1, 2, 3, 4, 5\]
even = list(filter(lambda x: x % 2 == 0, nums))
print(even) # \[2, 4\]
🔸 4. Функция reduce() из модуля functools
from functools import reduce
nums = \[1, 2, 3, 4\]
product = reduce(lambda x, y: x \* y, nums)
print(product) # 24
🔹 Отличия от обычной функции (def):
Характеристика | lambda | def |
---|---|---|
Имеет имя? | Нет (если не присваивать вручную) | Да |
--- | --- | --- |
Может содержать return? | ❌ Нет | ✅ Да |
--- | --- | --- |
Кол-во выражений | Только одно | Неограниченно |
--- | --- | --- |
Может содержать тело с несколькими строками? | ❌ Нет | ✅ Да |
--- | --- | --- |
Используется для | Кратких функций, обычно как аргумент | Любых функций |
--- | --- | --- |
🔹 Ограничения лямбда-функций:
-
Только одно выражение: нельзя использовать if, for, while в привычной форме.
-
Нет имени (если не сохранить вручную) — сложнее отлаживать и повторно использовать.
-
Нельзя использовать инструкции (return, assert, raise, try).
🔹 Но лямбда может использовать тернарный оператор:
max_func = lambda x, y: x if x > y else y
print(max_func(10, 20)) # 20
🔹 Когда использовать lambda, а когда def?
✅ Используй lambda, если:
-
Функция короткая и легко читается.
-
Она используется один раз, например в map, filter, sorted.
-
Не требуется многократное переиспользование.
❌ Используй def, если:
-
Логика сложная, с условиями и циклами.
-
Требуется документировать, отлаживать или повторно использовать.
-
Нужно назначить имя и сделать функцию читаемой для других.
🔹 Лямбда-функции и функциональное программирование
Лямбда тесно связана с функциональным стилем программирования, где функции:
-
передаются как аргументы,
-
возвращаются из других функций,
-
применяются к коллекциям (map, filter, reduce).
🔹 Заключение
Вопрос | Ответ |
---|---|
Что такое лямбда-функция? | Однострочная анонимная функция |
--- | --- |
Какой синтаксис? | lambda аргументы: выражение |
--- | --- |
Что она возвращает? | Значение выражения |
--- | --- |
Где используется? | В map, filter, sorted, reduce, GUI, API |
--- | --- |
Когда использовать? | Когда нужна короткая функция "на месте" |
--- | --- |
Основное ограничение | Только одно выражение, без return и блоков |
--- | --- |