Лямбда-функции Python с практическими примерами
Опубликовано: 2021-06-21Лямбда-функции Python — это небольшие функции, которые определены без имени. В Python ключевое слово «def» используется для определения функции. Однако в случае анонимных функций для определения этих функций используется ключевое слово «лямбда». Поэтому название «лямбда-функции. Там может быть имя или не присвоено функциям.
По сравнению с обычными функциями в Python лямбда-функции короткие.
Лямбда-функции были добавлены в синтаксис языков программирования, таких как Python, Java, C++, C# и т. д., в их синтаксисе. Хотя он используется в качестве основной концепции в языках ML или LISP.
В статье основное внимание будет уделено концепции лямбда -функций Python и их использованию.
В зависимости от типа языка программирования лямбда-функции могут использоваться взаимозаменяемо со следующими терминами:
- Анонимные функции
- Лямбда-функции
- Лямбда-выражения
- Лямбда-абстракции
- лямбда-форма
- Функциональные литералы
Оглавление
Лямбда-исчисление
Лямбда-вычисление — это модель вычислений, на основе которой строятся лямбда-выражения. Лямбда-исчисление основано на чистой абстракции и было формализовано Алонзо Чёрчем. Также известный как лямбда-абстракции, он относится к оригинальной модели, созданной Алонзо Чёрчем.
Любое вычисление может быть закодировано этим понятием.
Синтаксис лямбда-функции:
Следующий синтаксис используется при использовании лямбда-функций в python.
аргументы лямбда: выражение
В лямбда-функции в python может быть любое количество аргументов . Но функции могут иметь только одно выражение. Это выражение сначала оценивается, а затем возвращается. Использование лямбда-функций происходит везде, где есть потребность в функциональных объектах.
Рассмотрим случай, когда анонимная функция с двумя аргументами определена с помощью лямбда, но не привязана к какой-либо переменной:
лямбда х, у: х + у
Здесь два аргумента принимаются функцией, и возвращается сумма.
Есть несколько характеристик, показанных лямбда-функцией:
- В теле лямбда-функции не может быть операторов, а могут быть только выражения.
- Код выполнения — всего одна строка.
- Аннотации типов не поддерживаются лямбда-функцией в python .
- Допускается немедленный вызов.
Заявления не могут быть использованы
Как уже упоминалось, при определении лямбда-функций не может быть никаких утверждений. Если пользователь использует такие операторы, как pass, return, raise или assert, возникнет исключение SyntaxError. Результат исключения можно показать с помощью приведенного ниже кода.
Источник
В приведенном выше коде возникла синтаксическая ошибка при анализе кода, содержащего утверждение утверждения в теле лямбда-функции.
лямбда-функция содержит только одно выражение
В отличие от всех стандартных нормальных функций в Python, лямбда-функция в Python может содержать только одно выражение. Тело лямбда-функции может иметь выражение, распределенное по всему тексту за счет использования нескольких строк с круглыми скобками. Тем не менее, он по-прежнему остается единственным выражением.
Источник
Строка «нечетный» возвращается, когда есть «нечетный» аргумент, а строка «четный» возвращается, когда есть «четный» аргумент. В приведенном выше коде используются две строки, поскольку они заключены в круглые скобки. Но остается как единое выражение.
Аннотации типов
С появлением «подсказки типа» в python обычные функции теперь предпочтительнее лямбда-функций в python. При наличии таких инструментов, как mypy, pyre и т. д., ошибка типа может быть обнаружена с помощью full_name(). Синтаксическая ошибка, связанная с лямбда-функцией, возникает во время выполнения.
Выполнение немедленно вызванной функции (IIFE)
Эту функцию нельзя использовать вне интерпретатора Python. Определение лямбда-выражения в python можно передать функциям более высокого порядка, таким как map() и т. д.
Аргументы в лямбда-функции
В лямбда-выражениях Python поддерживаются различные способы передачи аргументов, например:
- Позиционные аргументы
- Именованные аргументы, также известные как аргументы ключевого слова
- Переменный список аргументов, также называемый varargs.
- Переменный список аргументов ключевого слова
- Аргументы только с ключевыми словами.
Декораторы в лямбда-выражении Python
Декоратор можно определить как реализацию шаблона, позволяющую добавлять поведение к классу или функции. Синтаксис @decorator используется как префикс к функции для выражения декоратора в python.
Только с аргументом «Python» будет напечатана decor_function() . Дополнительным поведением, которое печатается, является «Вызов функции «decorated_function».
Python позволяет добавлять декоратор к лямбда-функции, хотя использование синтаксиса @decorator не требуется. Декоратор действует как функция, которая вызывает лямбда-функцию.
<лямбда> появляется там, где идентифицируется лямбда-функция. В то время как в случае обычной функции, т.е. add_two, она идентифицируется четко.
В целях отладки лямбда-функции могут быть оформлены таким образом.
Закрытие
Closure() в python определяется как функция, в которой свободные переменные, за исключением параметров, используемых в функции, привязаны к определенным значениям, определенным в рамках функции. Мы можем вызвать закрытие из любого места. Лямбда-функции в python могут действовать как замыкания так же, как обычные функции действуют как замыкания.
Использование лямбда-функций
- Всякий раз, когда нам требуется использовать функцию в течение более короткого времени, в этом случае используются лямбда-функции.
- Для передачи функций функции более высокого порядка применяются лямбда-функции. Функции передаются в качестве аргументов этим функциям более высокого порядка.
- Лямбда-функции в Python можно использовать с другими встроенными функциями, такими как map() и т. д.
Тестирование лямбда-функций
С помощью модулей doctest и unittest можно протестировать лямбда-функции в python:
- Модули Unittest проверяют лямбда-функции так же, как и обычные функции.
- В случае модуля doctest код Python извлекается из docstring для выполнения теста. Синтаксис лямбда-функции не позволяет использовать строку документации . Но строку можно присвоить элементу _doc_ лямбда-выражения, которому присваивается имя.
Примеры лямбда-функций Python
В приведенном ниже коде определена функция с именем «identity», в которой возвращается аргумент. Он определяется как стандартная функция Python с помощью ключевого слова «def».
>>> определите личность (x);
….. вернуть х
Здесь x принимается в качестве аргумента функцией «identity» и при вызове возвращает аргумент.
Написание того же кода с использованием лямбда будет:
лямбда х: х
Выражение состоит из трех частей: ключевое слово Lambda, связанная переменная x и тело кода X.
- Связанная переменная относится к аргументу, который передается лямбда-функции. Однако свободные переменные — это те, которые не связаны и на которые можно ссылаться в теле выражения. Константа может быть свободной переменной или переменными, определенными в области действия функции.
Приведенное выше выражение можно уточнить как
>>> лямбда х: х + 1
Здесь функция добавляет 1 к аргументу. Функцию можно добавить к аргументу, окружив как функцию, так и аргумент с помощью круглых скобок.
>>>(лямбда х: х + 1)(2)
3
Для вычисления значения в выражении применяется стратегия редукции. Например, в приведенном выше примере связанную переменную «x» можно заменить аргументом 2.
(лямбда х: х + 1)(2) = лямбда 2: 2 + 1
= 2 + 1
= 3
Поскольку лямбда-функция представляет собой выражение, можно задать имя, а приведенный выше код можно переписать как
>>> add_one = Лямбда х : х + 1
>>> add_one(2)
3
Это эквивалентно написанию:
определение add_one (х):
вернуть х + 1
Лямбда-функции принимают один аргумент. Кроме того, при определении лямбда-функции в python функции не заключаются в скобки.
Для передачи более одного аргумента лямбда -функции Python аргументы перечислены и разделены запятой (,). При перечислении аргументов не должно быть скобок. Пример функции с несколькими аргументами показан ниже:
Здесь лямбда-функция получает два аргумента под full_name. Строка возвращается функцией, которая интерполирует первый и последний параметры. Код показывает, что при определении лямбда-функций скобки не использовались. Вызов лямбда-функции происходит так же, как и стандартной функции в Python, т. е. с использованием круглых скобок, окружающих аргументы.
Лямбда-функции Python с filter()
В python функция filter() принимает аргумент в виде списка и функции. Через элементы списка можно вызвать функцию, которая возвращает новый список элементов. Функция для этого вновь созданного списка оценивается как True .
Ниже показан пример функции filter() , которая используется для фильтрации четных чисел, содержащихся в списке.
Источник
Результатом работы программы является новый список: [4, 6, 8, 12].
Лямбда-функция Python с картой ()
Список и функция принимаются в качестве аргумента в функции python map(). Все элементы, содержащиеся в списке, вызывают функцию, которая возвращает вновь созданный список с элементами, возвращаемыми функцией.
Заключение
Лямбда-функции Python — это однострочные функции, объявленные без имени, т. е. анонимные функции. В лямбда-функцию можно передать несколько аргументов, которая может иметь только одно выражение. Иногда лямбда-функцию можно передать другим функциям в качестве аргумента. Функция, определенная с помощью ключевого слова 'def' в python, может вести себя как обычная функция.
Поэтому в статье объясняются концепции лямбда-функций в python, их применение с другими функциями, а также несколько примеров. Если вы также заинтересованы в получении опыта работы с языком программирования и совершенствовании навыков кодирования, вы можете пройти курс « Executive PG Program in Data Science », который предлагается upGrad . Он специально разработан для всех профессионалов начального уровня в возрасте от 21 до 45 лет, которые хотят достичь своих навыков кодирования в науке о данных. Если вы готовы сделать шаг навстречу своей мечте, приходите вперед и ознакомьтесь с преимуществами курса. Курс, предлагаемый IIIT-B, с практическими отраслевыми проектами разработан с учетом ваших потребностей и готовит вас к будущим ведущим отраслям.
Чем отличается обычная функция от лямбда-функции?
Мы знаем, что функция в Python определяется с помощью ключевого слова def. Точно так же лямбда-функция определяется с помощью ключевого слова лямбда. Рассмотрим приведенный ниже пример, чтобы глубоко понять разницу между ними:
# Обычная функция def sq(x): return x*x # Лямбда-функция lambda_sq = lambda x: x*x # Вызов обычно # Определенной функции print(sq(10)) # Использование лямбда-функции print(lambda_sq(10)) }
В приведенном выше примере показаны две функции, вычисляющие квадрат числа. Без лямбды мы должны создать функцию sq(x), а затем вернуть квадрат. С другой стороны, с лямбдой вся функция сводилась к одной строке. Lambda не требует оператора возврата.