Лямбда-функция в Python
Python lambdas - это небольшие, анонимные, суб-синтаксические работы, которые более ограничены, но короче, чем обычные функции Python.
В этой статье мы увидим все о лямбде. Мы обсудим и постараемся ответить на следующий вопрос о лямбде:
- Откуда появилась лямбда
- Что такое лямбда-функция
- Как использовать лямбда-функцию
- Когда следует избегать лямбда-функции
- Альтернативы лямбда
Лямбда - это концепция не только в Python, она используется в других языках программирования, таких как Java, C #, C ++ и т. д. Концепция лямбда в языках программирования пришла из вычислительной математики.
Откуда появилась лямбда
История лямбда началась еще в 30-х годах прошлого века. Алонзо Черч, наиболее известный своим лямбда-исчислением, тезисом Черча – Тьюринга, был американским математиком и логиком, формализовавшим лямбда-исчисление. Функциональные языки берут свое начало в математической логике и лямбда-исчислении, в то время как ключевые языки программирования используют модель вычислений на основе состояний, разработанную Аланом Тьюрингом. Две вычислительные модели, лямбда-исчисление и машины Тьюринга, можно преобразовать в одну. Это сходство известно как гипотеза Черча-Тьюринга.
Функциональные языки, такие как Haskell и Lisp, наследуют лямбда-исчисление, но такие языки, как Python или C, наследуют императивное программирование.
Первоначально Python не был функциональным языком, но на более поздних этапах он принимает несколько функциональных концепций.
Я могу подробнее рассказать об истории лямбда, но это не наша основная тема для обсуждения. Итак, перейдем к следующей теме.
Что такое лямбда-функция
Лямбда-функции - это анонимные функции в Python. Лямбда-функции похожи на обычные функции. Разница между обычной функцией и лямбда-функцией заключается в том, что они могут быть определены без имени, но обычные функции определяются с помощью ключевого слова def.
Ключевое слово lambda используется для определения анонимной или лямбда-функции.
Если мы сравним лямбда-функцию и обычную функцию, то,
- Лямбда - функция может принимать любое число аргументов, но может иметь только одно выражение, в то время как обычная функция имеет точное количество аргументов, которые мы объявляем в момент определения.
- Лямбда-функция - это однострочные функция. Ее тело содержит выражение в той же строке, в которой оно определено. В обычных функциях, функции содержат блоки тела, в которых определены для выполнения некоторые операторы.
- Поскольку лямбда - это однострочная функция, ее можно вызвать мгновенно, но обычная функция должна вызывать сама себя и требовать времени для вызова.
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 Напишите программу для вычисления экспоненты с помощью лямбда-функции.
Чтобы решить приведенный выше пример, я создал очень красивую визуализацию, чтобы понять процесс. Вы можете решить это таким образом:
- Сначала я определяю лямбда-выражение для вычисления экспоненты.
- Передаю это выражение лямбда-функции, представленной квадратным прямоугольником.
- Лямбда-функция представлена прямоугольником. Она даст вам результат после выполнения расчета.
- Код ниже.
Exp = (lambda x,y : x**y) (4,4)
print(Exp)
Я взял другие значения, но это не проблема.
Теперь я хочу обсудить здесь еще одну очень важную вещь. Лишь немногие программисты обсуждают это. Для этого я беру другой пример.
Сначала разбираемся в коде.
- Я просто определил строку и сохранил ее в переменной name, которая была передана лямбда-выражению в качестве параметра.
- После этого объявил лямбду, которая печатает результат.
- Но результата не получил.
Это потому, что сама лямбда возвращает объект функции. В приведенном выше примере лямбда просто возвращает объект функции и место в памяти, где он хранится. И вывод, который мы получаем на консоли, - это то место.
Теперь я внесу некоторые изменения, чтобы получить желаемый результат.
Расшифровка кода:
Теперь я получил то, что хочу от лямбда-выражения, но есть еще один результат - «Нет».
Теперь, когда я запускаю код, моя внешняя функция печати пытается вызвать лямбда-функцию, а внутренняя функция вызова вызывает переменную имени. Итак, внутренняя печать дает мне строку, а внешняя печать возвращает объект из лямбда-функции.
Теперь он дает мне правильный результат, который мне нужен обоими способами.
Посмотрите, насколько напряженной была эта задача - напечатать оператор с использованием лямбда.
Здесь вам нужно понять, когда использовать лямбда, а когда избегать.
Теперь я напишу тот же код с обычной функцией.
Насколько это просто?
Когда следует избегать лямбда-функции
Итак, нам нужно избегать лямбда для простых задач и понимать использование лямбда.
Когда мы использовали лямбда-функцию, мы не использовали имя функции, и не было необходимости явно вызывать лямбда-функцию, поэтому лямбда называется анонимной функцией.
Для обычной функции мы определяем имя функции print_line, и там также есть тело, но в случае лямбда-функции тела не было. Это была одинарная линия.
Вот некоторые моменты против использования лямбда-функции в Python:
- Читаемость кода
- Заставлять мыслить функционально
- Странный синтаксис
- Загадочный стиль
Альтернативы лямбда
- Понимание списка.
- Генераторы.
Понимание списков - лучшая альтернатива лямбда. В некоторых случаях лямбда-выражение используется с функциями map (), reduce () и filter (), но то же самое может быть выполнено с пониманием списка вместе с циклом for.
Теперь вы можете сами подумать, как и когда использовать лямбда-функции.
Я надеюсь, что эта статья поможет новичку понять введение лямбда.