Codebra
29 января 2026 в 18:33

Урок 52. Анонимные функции (выражения lambda)

В этом уроке подробно разберемся с анонимными функциями в Python, а именно с выражением lambda(лямбда).
📝

Внимание! На этой странице вы найдете материал урока из архивного курса по Python. Курс был написан в 2024 году и по-прежнему актуален для начинающих разработчиков.

Теоретический материал сохранен в исходном виде, а практические задания с автоматической проверкой вынесены в отдельные интенсивы и задания.

Полный список уроков доступен по тегу Архивный курс по Python и на странице первого урока.

📝 Кратко
  • В Python есть лямбда-выражения, которые создают объекты функций без имени.
  • Лямбда-выражения применяются для встраивания определения функции в строку или отложенного выполнения кода.
  • Лямбда-выражение отличается от оператора def тем, что оно не имеет имени и является одиночным выражением.
  • Ветвления и циклы можно реализовать с помощью лямбда-выражения, но это может усложнить код.
  • Лямбда-выражения полезны для краткого обозначения функций, но не стоит злоупотреблять ими.
  • Область видимости лямбда-выражения относится к вложенной области (E из правила LEGB).
  • Лямбда-выражения являются инструментами функционального программирования в Python.

В предыдущем уроке мы разобрались с аргументами и параметрами функций, а также с операторами * и **. Вот и дошли мы до этой темы. Если вы помните, в уроке «Внутреннее устройство и сортировка словаря в Python» я уже упоминал про lambda. Теперь настало время разобраться с этим понятием подробнее.

Кроме оператора def, в языке Python есть еще одна форма выражения, создающая объекты функций. Как и def, лямбда-выражение создает функцию, которая будет вызвана позже. Выражение lambda, в отличие от def не имеет имени, поэтому иногда такие функции называют анонимными.

На практике анонимные функции применяются, когда необходимо встроить определение функции в строку или отложить выполнение части кода. Далее синтаксис lambda-выражения:

lambda арг1, арг2, … аргN : выражение

Пока не совсем понятно, поэтому далее приведу конкретные примеры. Но для начала разберемся, чем lambda отличается от оператора def. Лямбда – выражение, а не оператор. Таким образом, лямбда-выражение может находится в таких местах, где это недопустимо синтаксисом для оператора def, например, в аргументах вызова функций (про аргументы и параметры мы подробно разбирались в предыдущем уроке).

Вторым отличием lambda от def, является ограниченность первого. Лямбда – одиночное выражение, а не блок операторов. Конечно, можно реализовать ветвление при помощи тернарного оператора и циклы при помощи списковых включений, но такая реализация существенно запутает код и сведет на «нет» все преимущества лямбда-выражения. Если вам нужны ветвленияциклы и более сложная логика, то используйте оператор def.

Рассмотрим знакомый вам пример использования оператора def:

def sum(a, b):
    return a + b

print(sum(3, 2)) # => 5

А теперь запишем аналогичный пример, но при помощи лямбда-выражения:

f = lambda a, b : a + b
print(f(3, 2)) # => 5

Скоро мы дойдем до встроенных функций filter()map()reduce() и вам станет окончательно понятно, для чего необходимо знать лямбда-выражения. Выражение lambda безусловно полезно для краткого обозначения функции, но не стоит им злоупотреблять и применять там, где требуется вся мощь оператора def.

Область видимости выражения lambda

Вспомним урок «Область видимости в Python» и правило LEGB. Лямбда относится к букве E – вложенная область.

В этом уроке мы разобрались с тем, что такое лямбда-выражение и чем оно отличается от оператора def. Все это нас подводит к инструментам функционального программирования (вышеупомянутые функции filter()map()reduce() и есть парадигмы функционального программирования в Python).

📝

Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегу Python.