Шаг 23.
Однострочники Python.
Трюки Python. Лямбда-функции и функция map()

    На этом шаге мы познакомимся с двумя важными возможностями Python: лямбда-функциями и функцией map() - ценными инструментами в наборе Python-разработчика. Мы воспользуемся ими для поиска конкретного значения в списке строковых значений.

Общее описание

    Из 16 шага вы узнали, как описать новую функцию с помощью выражения def x(), за которым следует тело функции. Однако это не единственный способ описания функции в языке Python. Можно также воспользоваться лямбда-функциями для описания простой функции с возвращаемым значением (которое может быть любым объектом, в том числе кортежем, списком или множеством). Другими словами, лямбда-функция обязательно возвращает вызывающей стороне значение-объект. Учтите, что на практике это ограничивает сферу применения лямбда-функций, ведь в отличие от обычных функций они не предназначены для выполнения кода без возвращения объекта в вызывающую среду.


Мы уже рассматривали лямбда-функции в 16 шаге, но поскольку это очень важное понятие, используемое повсеместно, мы рассмотрим его подробнее на этом шаге.

    Благодаря лямбда-функциям можно описать новую функцию с помощью одной строки кода, указав ключевое слово lambda. Это удобно, если нужно быстро создать функцию для однократного использования и последующего немедленного сбора мусора. Посмотрим сначала на точный синтаксис лямбда-функций:

  lambda <аргументы> : <возвращаемое выражение>

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

  lambda x, у: x + y

    У данной лямбда-функции два аргумента, x и у. Возвращаемое значение представляет собой просто их сумму, то есть x + y.

    Лямбда-функции обычно задействуют, когда функцию нужно вызвать только один раз и ее можно легко описать с помощью одной строки кода. Распространенный пример: использование лямбда-функций с функцией map(), принимающей в качестве входных аргументов функциональный объект f и последовательность s. Далее функция map() применяет функцию f() к каждому из элементов последовательности s. Конечно, можно описать для функционального аргумента f полноценную поименованную функцию. Но зачастую это снижает удобочитаемость, особенно если функция короткая и понадобится только один раз, так что лучше воспользоваться лямбда-функцией.

    Прежде чем показать вам однострочник, продемонстрируем еще один трюк Python, который сильно облегчит вам жизнь: проверку того, включает ли строковое значение x подстроку у, с помощью выражения y in x. Этот оператор возвращает True при наличии хотя бы одного вхождения строки символов у в строке х. Например, значение выражения '42' in 'The answer is 42' равно True, а выражение '21' in 'The answer is 42' равно False.

    Теперь посмотрим на наш однострочник.

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




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