На этом шаге мы познакомимся с двумя важными возможностями Python: лямбда-функциями и функцией map() - ценными инструментами в
наборе Python-разработчика. Мы воспользуемся ими для поиска конкретного значения в списке строковых значений.
Из 16 шага вы узнали, как описать новую функцию с помощью выражения def x(), за которым следует тело функции. Однако это не единственный способ описания функции в языке Python. Можно также воспользоваться лямбда-функциями для описания простой функции с возвращаемым значением (которое может быть любым объектом, в том числе кортежем, списком или множеством). Другими словами, лямбда-функция обязательно возвращает вызывающей стороне значение-объект. Учтите, что на практике это ограничивает сферу применения лямбда-функций, ведь в отличие от обычных функций они не предназначены для выполнения кода без возвращения объекта в вызывающую среду.
Благодаря лямбда-функциям можно описать новую функцию с помощью одной строки кода, указав ключевое слово 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.
Теперь посмотрим на наш однострочник.
На следующем шаге мы закончим изучение этого вопроса.