Шаг 40.
Python: тонкости программирования. Эффективные функции. Лямбды - это функции одного выражения (общие сведения)

    На этом шаге мы приведем краткое введение в лямбда-функции.

    Ключевое слово 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. Именно поэтому некоторые разработчики называют лямбды функциями одного выражения.

    На следующем шаге мы рассмотрим использование этих функций.




Предыдущий шаг Содержание