Лямбда-функции 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 не требует оператора возврата.