Анонимные функции в 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]
codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©