TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #3833 2.79K
Простыми словами о сложном: лямбда-функции

Помимо инструкции def имеется возможность создавать объекты функций в форме выражений. Из-за сходства с аналогичной возможностью в языке LISP она получила название lambda.

lambda x, y, z: x + y + z

Это выражение создает функцию, которая будет вызываться позднее, но в отличие от инструкции def, выражение не связывает ее с именем. Именно поэтому lambda-выражения иногда называют анонимными (то есть безымянными) функциями.

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

В общем виде lambda-выражение состоит из ключевого слова lambda, за которым следуют один или более аргументов (точно так же, как список аргументов в круглых скобках в заголовке инструкции def) и далее, вслед за двоеточием, находится выражение:

lambda argument1, argument2,... argumentN : выражение, использующее аргументы

lambda – это выражение, а не инструкция. По этой причине это ключевое слово может появляться там, где синтаксис языка Python не позволяет использовать инструкцию def – внутри литералов или в вызовах функций, например.

Тело lambda-выражения сродни тому, что вы помещаете в инструкцию return внутри определения def, – вы просто вводите результат в виде выражения вместо его явного возврата.

Вследствие этого ограничения lambda-выражения менее универсальны, чем инструкция def – в теле lambda-выражения может быть реализована только логика, не использующая такие инструкции, как if. Такая реализация предусмотрена заранее – она ограничивает возможность создания большого числа уровней вложенности программ: lambda-выражения предназначены для создания простых функций, а инструкции def – для решения более сложных задач.

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

def func(x, y, z): return x + y + z
func(2, 3, 4) # 9

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

f = lambda x, y, z: x + y + z
f(2, 3, 4) # 9

@zen_of_python
  • 👍 10
  • ❤ 2
More from @zen_of_python
  1. Oct 1, 2026Как не сломать pickle собственным исключением Python Если конструктор исключения принимает…
  2. Oct 1, 2026Как выстроить защиту цепочки поставок Python Эшелонированная схема защиты начинается с соб…
  3. Sep 30, 2026Пакетная обработка в Python: где strict=True не спасает запись С Python 3.12 itertools.bat…
  4. Sep 30, 2026Как воспроизводить гонки потоков Python с помощью blanket Обычно порядок выполнения потоко…
  5. Sep 30, 2026Как отменять задачи в heapq и сохранять порядок при равных приоритетах heapq сравнивает ко…
  6. Sep 29, 2026Как битовые множества сокращают память моделей Pydantic Explicit is better than implicit,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →