Лямбда-функции – это анонимные функции, которые содержат только одно выражение.
Вы можете подумать, что лямбда-функции – это что-то сложное, доступное только продвинутым программистам. Но из этой статьи вы узнаете, как легко начать использовать их в своём коде.
В Python мы обычно создаём функции так:
def my_func(a): # Тело функции
Они объявляются при помощи ключевого слова def
, им можно давать название, добавлять список аргументов в скобках. В теле функции может быть много строчек кода, с любым количеством выражений. Но иногда вам может понадобиться функция с одним-единственным выражением внутри.
Например, функция, удваивающая аргумент:
def double(x): return x*2
Такую функцию, например, можно использовать в методе map
.
def double(x): return x*2 my_list = [1, 2, 3, 4, 5, 6] new_list = list(map(double, my_list)) print(new_list) # [2, 4, 6, 8, 10, 12]
Именно здесь целесообразно использовать лямбда-функцию, т.к. её можно создать прямо в том же месте, где она используется. А это означает меньше строк кода. Кроме того, нам не придётся создавать функцию с именем, которая будет занимать место в памяти и пригодится лишь однажды.
Как вы уже поняли, лямбды применяются там, где нужна маленькая функция на короткое время – например, в функциях высшего порядка, таких как map
или filter
.
Синтаксис лямбда-функции имеют следующий:
lambda args: expression
Сперва пишется слово lambda
, затем идет одинарный пробел, за ним — список аргументов через запятую, следом – двоеточие и само выражение, являющееся телом функции.
Обратите внимание, что лямбда-функциям нельзя дать имя, потому что они анонимные (без имени) по определению.
Аргументов в них может быть сколько угодно, но выражение в теле обязательно одно.
[python_ad_block]Можно написать лямбду, которая удваивает свой аргумент: lambda x: x*2
, и использовать её в функции map
, чтобы удвоить все элементы в списке:
my_list = [1, 2, 3, 4, 5, 6] new_list = list(map(lambda x: x*2, my_list)) print(new_list) # [2, 4, 6, 8, 10, 12]
Заметьте разницу между этим кодом и функцией double
, которую мы написали выше: лямбда гораздо компактнее.
А ещё можно создать лямбда-функцию, которая ищет числа больше нуля: lambda x: x > 0
и использовать в filter
, чтобы создать список исключительно положительных чисел.
my_list = [18, -3, 5, 0, -1, 12] new_list = list(filter(lambda x: x > 0, my_list)) print(new_list) # [18, 5, 12]
Лямбда-функция определяется там, где используется. Таким образом, в памяти не придётся хранить функцию с именем. Поэтому для одноразового использования целесообразно писать лямбда-функции, чтобы избежать загромождения.
Лямбда также может быть возвращаемым значением другой функции.
Если вам потребуется создать несколько функций, умножающих числа (например, удваивающих и утраивающих), лямбда может помочь.
Вместо объявления множества таких функций можно создать всего лишь одну: multiplyBy
. А затем можно вызывать эту функцию по нескольку раз с разными аргументами, чтобы создавать функции умножения на два, на три и т.д.
def muliplyBy (n): return lambda x: x*n double = multiplyBy(2) triple = muliplyBy(3) times10 = multiplyBy(10)
Лямбда-функция принимает значение n
из функции multiplyBy
. Таким образом, в double
параметр n
равен 2
, в triple
— 3
, а в times10
– 10
. Теперь при вызове полученных функций с определённым аргументом будет производиться умножение на соответствующее число.
double(6) > 12 triple(5) > 15 times10(12) > 120
Без лямбды вам бы пришлось определять внутри multiplyBy
другие функции:
def muliplyBy (x): def temp (n): return x*n return temp
Лямбда-функция занимает всего полстроки и увеличивает читабельность кода.
Лямбда-функции – это компактный вариант записи функций, содержащих только одно выражение. Новички обычно ими не пользуются, но теперь вы понимаете, как их можно применить для решения задач разной сложности.
Перевод статьи Lambda Function in Python – Example Syntax.
Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…
Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…
В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…
В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…
При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…
В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…