На этом шаге мы приведем краткое введение в лямбда-функции.
Ключевое слово lambda в Python предоставляет краткую форму для объявления небольших анонимных функций. Лямбда-функции ведут себя точно так же, как обычные функции, объявляемые ключевым словом def. Они могут использоваться всякий раз, когда требуются объекты-функции. Например, ниже показано определение простой лямбда-функции, выполняющей сложение:
>>> add = lambda x, y: x + y >>> add(5, 3) 8
Та же самая функция add() может быть определена при помощи ключевого слова def, но она была бы чуть-чуть многословнее:
>>> def add(x, y): return x + y >>> add(5, 3) 8
Сейчас вы, вероятно, задаетесь вопросом: "Что за шум вокруг этих лямбд? Если они нечто иное, чем слегка укороченная версия объявления функций при помощи ключевого слова def, то что тут такого-то?"
Взгляните на приведенный ниже пример и держите слова "функциональное выражение" в голове, пока его выполняете:
>>> (lambda x, y: x + y)(5, 3) 8
Ладно, и что же здесь произошло? Мы просто использовали lambda, чтобы определить однострочную функцию "add", а затем немедленно вызвали ее с аргументами 5 и 3.
Концептуально: лямбда-выражение lambda x, y: x + y аналогично объявлению функции при помощи ключевого слова def, только записывается в одну строку. Основное отличие здесь в том, что перед его использованием нам не пришлось связывать объект-функцию с именем. Мы просто сформулировали выражение, которое хотели вычислить как часть лямбды, и затем немедленно его вычислили, вызвав лямбда-выражение как обычную функцию.
Прежде чем вы продолжите, возможно, вам стоит немного поэкспериментировать с приведенным выше примером кода, чтобы по-настоящему усвоить его смысл. Поэтому не переживайте по поводу того, что потратите на него несколько минут в сеансе интерпретатора. Это будет стоить того.
Существует еще одно синтаксическое различие между определениями лямбд и обычных функций. Лямбда-функции ограничены одним-единственным выражением. Это означает, что в лямбда-функциях не могут применяться инструкции или аннотации - и даже инструкция return.
Тогда каким образом возвращать значения из лямбд? При исполнении лямбда-функции ее выражение вычисляется и затем результат выражения автоматически возвращается, поэтому всегда существует неявная инструкция return. Именно поэтому некоторые разработчики называют лямбды функциями одного выражения.
На следующем шаге мы рассмотрим использование этих функций.