Анонимные функции в Python
В этой статье вы познакомитесь с анонимными функциями, они же лямбда-функции. Вы узнаете, что это, какой у них синтаксис и как их грамотно использовать.
Что такое лямбда-функции
Анонимная функция — функция, которая объявляется без имени.
Обычно объявление функции сопровождается ключевым словом def
. Анонимные же функции объявляются с помощью lambda
.
Именно поэтому анонимные функции еще называют лямбда-функциями.
Как использовать лямбда-функции
Ниже показан синтаксис лямбда-функций.
Синтаксис
lambda аргументы: выражение
У лямбда-функций может быть любое число аргументов, но лишь одно выражение. Функция вычисляется и возвращается ее результат. Лямбда-функции используются в ситуациях, когда требуются объекты функций.
Пример лямбда-функции
# пример использования лямбда-функции
double = lambda x: x * 2
print(double(5))
Вывод:
10
В этом примере double = lambda x: x * 2
— лямбда-функция: х
— аргумент, x * 2
— выражение, которое выполняет наша функция и результат которого возвращает.
У лямбда-функции нет имени. Она возвращает функцию, которая присваивается переменной double
. Лямбда-функцию можно вызывать как обычную функцию — с помощью круглых скобок. Объявление:
double = lambda x: x * 2
Почти так же, как и с обычной функцией:
def double(x):
return x * 2
Как грамотно использовать лямбда-функции
Лямбда-функции используются в тех случаях, когда нужны безымянные функции на небольшой промежуток времени.
Обычно в Python они используются в качестве аргумента для функций более высокого порядка (функций, принимающих в качестве аргументов другие функции). Часто их используют в комбинации со следующими встроенными функциями: filter()
, map()
и т. д.
Функция filter()
filter()
принимает в виде аргументов итерируемый объект и другую функцию.
Сначала функция проверяет каждый элемент итерируемого объекта. После этого она возвращает новый список, в котором содержатся только те элементы, для которых функция вернула True
.
Пример работы filter()
# Программа, которая находит четные числа в списке
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
print(new_list)
Вывод:
[4, 6, 8, 12]
Функция map()
map()
, как и filter(), принимает в качестве аргументов итерируемый объект и другую функцию.
Функция map()
позволяет применить функцию к каждому элементу итерируемого объекта. После этого она возвращает новый список с преобразованными элементами.
Пример использования map()
# Программа, которая умножает каждое число в списке на 2
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(map(lambda x: x * 2 , my_list))
print(new_list)
Вывод:
[2, 10, 8, 12, 16, 22, 6, 24]