DevGang
Авторизоваться

Лямбда-функция в Python 

Python lambdas - это небольшие, анонимные, суб-синтаксические работы, которые более ограничены, но короче, чем обычные функции Python.

В этой статье мы увидим все о лямбде. Мы обсудим и постараемся ответить на следующий вопрос о лямбде:

  1. Откуда появилась лямбда
  2. Что такое лямбда-функция
  3. Как использовать лямбда-функцию
  4. Когда следует избегать лямбда-функции
  5. Альтернативы лямбда

Лямбда - это концепция не только в Python, она используется в других языках программирования, таких как Java, C #, C ++ и т. д. Концепция лямбда в языках программирования пришла из вычислительной математики.

Откуда появилась лямбда

История лямбда началась еще в 30-х годах прошлого века. Алонзо Черч, наиболее известный своим лямбда-исчислениемтезисом Черча – Тьюринга, был американским математиком и логиком, формализовавшим лямбда-исчисление. Функциональные языки берут свое начало в математической логике и лямбда-исчислении, в то время как ключевые языки программирования используют модель вычислений на основе состояний, разработанную Аланом Тьюрингом. Две вычислительные модели, лямбда-исчисление и машины Тьюринга, можно преобразовать в одну. Это сходство известно как гипотеза Черча-Тьюринга.

Функциональные языки, такие как Haskell и Lisp, наследуют лямбда-исчисление, но такие языки, как Python или C, наследуют императивное программирование.

Первоначально Python не был функциональным языком, но на более поздних этапах он принимает несколько функциональных концепций.

Я могу подробнее рассказать об истории лямбда, но это не наша основная тема для обсуждения. Итак, перейдем к следующей теме.

Что такое лямбда-функция

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

Ключевое слово lambda используется для определения анонимной или лямбда-функции.

Если мы сравним лямбда-функцию и обычную функцию, то,

  1. Лямбда - функция может принимать любое число аргументов, но может иметь только одно выражение, в то время как обычная функция имеет точное количество аргументов, которые мы объявляем в момент определения.
  2. Лямбда-функция - это однострочные функция. Ее тело содержит выражение в той же строке, в которой оно определено. В обычных функциях, функции содержат блоки тела, в которых определены для выполнения некоторые операторы.
  3. Поскольку лямбда - это однострочная функция, ее можно вызвать мгновенно, но обычная функция должна вызывать сама себя и требовать времени для вызова.
x = lambda  x,y :  x * y
print(x(3,4))
x = ( lambda x,y : x*y) (2,3)
print(x)

В приведенном выше коде показана лямбда-функция, которая дает произведение двух переменных x и y. В приведенном выше примере x - это переменная, которая будет хранить возвращаемое значение лямбда-выражения.

Части лямбда-выражения.

Ключевое слово - лямбда.

Аргументы - x и y.

Выражение - x * y

Мы можем передать аргументы функции, заключив функцию и ее аргумент в круглые скобки:

Ниже приведен пример передачи аргументов в одной строке.

x = ( lambda  x,y :  x*y) (2,3)
print(x)

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

Как использовать лямбда-функцию

До сих пор я излогал теоритические сведения о лямбда, поэтому мы разберемся, как использовать лямбда, с помощью примеров.

Пример 1 Напишите программу для вычисления экспоненты с помощью лямбда-функции.

Рассчет показатель
Рассчет показатель

Чтобы решить приведенный выше пример, я создал очень красивую визуализацию, чтобы понять процесс. Вы можете решить это таким образом:

  1. Сначала я определяю лямбда-выражение для вычисления экспоненты.
  2. Передаю это выражение лямбда-функции, представленной квадратным прямоугольником.
  3. Лямбда-функция представлена ​​прямоугольником. Она даст вам результат после выполнения расчета.
  4. Код ниже.
Exp = (lambda x,y : x**y) (4,4)
print(Exp)

Я взял другие значения, но это не проблема.

Теперь я хочу обсудить здесь еще одну очень важную вещь. Лишь немногие программисты обсуждают это. Для этого я беру другой пример.

Сначала разбираемся в коде.

  1. Я просто определил строку и сохранил ее в переменной name, которая была передана лямбда-выражению в качестве параметра.
  2. После этого объявил лямбду, которая печатает результат.
  3. Но результата не получил.

Это потому, что сама лямбда возвращает объект функции. В приведенном выше примере лямбда просто возвращает объект функции и место в памяти, где он хранится. И вывод, который мы получаем на консоли, - это то место.

Теперь я внесу некоторые изменения, чтобы получить желаемый результат.

Расшифровка кода:

Теперь я получил то, что хочу от лямбда-выражения, но есть еще один результат - «Нет».

Теперь, когда я запускаю код, моя внешняя функция печати пытается вызвать лямбда-функцию, а внутренняя функция вызова вызывает переменную имени. Итак, внутренняя печать дает мне строку, а внешняя печать возвращает объект из лямбда-функции.

Теперь он дает мне правильный результат, который мне нужен обоими способами.

Посмотрите, насколько напряженной была эта задача - напечатать оператор с использованием лямбда.

Здесь вам нужно понять, когда использовать лямбда, а когда избегать.

Теперь я напишу тот же код с обычной функцией.

Насколько это просто?

Когда следует избегать лямбда-функции

Итак, нам нужно избегать лямбда для простых задач и понимать использование лямбда.

Когда мы использовали лямбда-функцию, мы не использовали имя функции, и не было необходимости явно вызывать лямбда-функцию, поэтому лямбда называется анонимной функцией.

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

Вот некоторые моменты против использования лямбда-функции в Python:

  1. Читаемость кода
  2. Заставлять мыслить функционально
  3. Странный синтаксис
  4. Загадочный стиль

Альтернативы лямбда

  1. Понимание списка.
  2. Генераторы.

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

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

Я надеюсь, что эта статья поможет новичку понять введение лямбда.

Источник:

#Python #Data Science #Machine Learning
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В подарок 100$ на счет при регистрации

Получить