Искать
Вы превысили запрос на
0 знаков

52. Анонимные функции (выражения lambda)

Не пройден
0
0

Кратко

- В Python есть лямбда-выражения, которые создают объекты функций без имени.

- Лямбда-выражения применяются для встраивания определения функции в строку или отложенного выполнения кода.

- Лямбда-выражение отличается от оператора def тем, что оно не имеет имени и является одиночным выражением.

- Ветвления и циклы можно реализовать с помощью лямбда-выражения, но это может усложнить код.

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

- Область видимости лямбда-выражения относится к вложенной области (E из правила LEGB).

- Лямбда-выражения являются инструментами функционального программирования в Python.

В предыдущем уроке мы разобрались с аргументами и параметрами функций, а также с операторами * и **. Вот и дошли мы до этой темы. Если вы помните, в уроке «Внутреннее устройство и сортировка словаря в Python» я уже упоминал про lambda. Теперь настало время разобраться с этим понятием подробнее.

Кроме оператора def, в языке Python есть еще одна форма выражения, создающая объекты функций. Как и def, лямбда-выражение создает функцию, которая будет вызвана позже. Выражение lambda, в отличие от def не имеет имени, поэтому иногда такие функции называют анонимными.

На практике анонимные функции применяются, когда необходимо встроить определение функции в строку или отложить выполнение части кода. Далее синтаксис lambda-выражения:

Пример (python)
lambda арг1, арг2, … аргN : выражение 

Пока не совсем понятно, поэтому далее приведу конкретные примеры. Но для начала разберемся, чем lambda отличается от оператора def. Лямбда – выражение, а не оператор. Таким образом, лямбда-выражение может находится в таких местах, где это недопустимо синтаксисом для оператора def, например, в аргументах вызова функций (про аргументы и параметры мы подробно разбирались в предыдущем уроке).

Вторым отличием lambda от def, является ограниченность первого. Лямбда – одиночное выражение, а не блок операторов. Конечно, можно реализовать ветвление при помощи тернарного оператора и циклы при помощи списковых включений, но такая реализация существенно запутает код и сведет на «нет» все преимущества лямбда-выражения. Если вам нужны ветвленияциклы и более сложная логика, то используйте оператор def.

Рассмотрим знакомый вам пример использования оператора def:

Пример (python)
def sum(a, b):
    return a + b

print(sum(3, 2)) # => 5 

А теперь запишем аналогичный пример, но при помощи лямбда-выражения:

Пример (python)
f = lambda a, b : a + b
print(f(3, 2)) # => 5 

Скоро мы дойдем до встроенных функций filter()map()reduce() и вам станет окончательно понятно, для чего необходимо знать лямбда-выражения. Выражение lambda безусловно полезно для краткого обозначения функции, но не стоит им злоупотреблять и применять там, где требуется вся мощь оператора def.

Область видимости выражения lambda

Вспомним урок «Область видимости в Python» и правило LEGB. Лямбда относится к букве E – вложенная область.

В этом уроке мы разобрались с тем, что такое лямбда-выражение и чем оно отличается от оператора def. Все это нас подводит к инструментам функционального программирования (вышеупомянутые функции filter()map()reduce() и есть парадигмы функционального программирования в Python).

Тест

Две секундочки...

Похожие уроки Codebra

@codebra_official
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Пользовательские функции в PHPКурс по PHP
Основы функций в PythonЗнакомство с Python
Генераторы и оператор yield в PythonЗнакомство с Python
Типы данных в PythonЗнакомство с Python
Написание модулей в PythonЗнакомство с Python
Первое знакомство с PythonЗнакомство с Python
Продолжаем написание классов в PythonЗнакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Введение в раздел «Структуры данных в Python»Знакомство с Python
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Если вас интересует компьютерная безопасность, реверс-инжиниринг и анализ бинарных файлов, то посмотрите вторую часть сайта Codebra: CodeSecure

Закрыть окно