Что такое лямбда-функция? Какое у неё назначение?

🔹 Что такое лямбда-функция?

Лямбда-функция (или анонимная функция) — это однострочная функция, определяемая без имени, с помощью ключевого слова 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? ❌ Нет ✅ Да
--- --- ---
Кол-во выражений Только одно Неограниченно
--- --- ---
Может содержать тело с несколькими строками? ❌ Нет ✅ Да
--- --- ---
Используется для Кратких функций, обычно как аргумент Любых функций
--- --- ---

🔹 Ограничения лямбда-функций:

  1. Только одно выражение: нельзя использовать if, for, while в привычной форме.

  2. Нет имени (если не сохранить вручную) — сложнее отлаживать и повторно использовать.

  3. Нельзя использовать инструкции (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 и блоков
--- ---