Вступление
Лямбда-функция, которую также называют анонимной функцией, является одной из основных концепций функционального программирования.
Python, поддерживающий несколько парадигм программирования, также дает нам простой способ определения лямбда-функции.
Шаблон написания лямбда-функции в Python:
lambda arguments : expression
Он состоит из трех частей:
lambda
ключевое слово- Аргументы, которые получит функция
- Выражение, результатом которого является возвращаемое значение функции
Благодаря своей простоте лямбда-функции могут сделать наш код Python более элегантным в некоторых сценариях использования. В этом посте будут продемонстрированы 5 распространенных применений лямбда-функций в Python и объяснены их интересными примерами.
Использование 1: дайте ему имя и используйте его как обычно
Если нам просто нужна простая функция, лямбда - хороший выбор, поскольку ее можно рассматривать как более простой способ определения функции. Следовательно, мы можем дать ему имя и использовать его как обычную функцию.
Как показано в приведенном выше примере, результаты методов add_ten()
и lambda_add_ten()
идентичны, но лямбда-функция может сделать наш код короче и чище.
Использование 2: сотрудничество с функциями высшего порядка
Если мы сможем использовать лямбда-функции вместе с функциями высшего порядка, такими как map()
, filter()
и reduce()
, программы станут элегантными.
Давайте ответим на вопрос собеседования для разработчиков Python:
Дайте вам следующий список, можете ли вы распечатать все нечетные числа в нем?
numbers = [1, 12, 37, 43, 51, 62, 83, 43, 90, 2020]
Вопрос кажется простым, но этого достаточно, чтобы разделить младших и старших разработчиков Python.
Младший программист может написать такой код:
Работает и ничего страшного. Однако быть хорошим - это не здорово. Старшему программисту Python понадобится всего одна строка кода, чтобы сделать то же самое:
Выглядит элегантнее, не правда ли?
Между прочим, приведенное выше однострочное решение предназначено только для демонстрации того, как можно использовать лямбда-функцию. Конечно, есть и другие однострочные решения, такие как техника понимания списка:
odd_numbers = [i for i in numbers if i % 2 == 1]
Фактически, понимание списка может быть более читабельным, чем функция более высокого порядка, взаимодействующая с лямбда-функцией во многих случаях. Подробнее:
Использование 3: присвоить «ключевому» аргументу
Некоторые встроенные методы имеют key
аргументы, которые дают нам большую гибкость.
Например, когда мы используем метод sorted()
или sort()
для сортировки итерируемого в Python, аргумент key
определяет, как сравнивать два элемента в итерируемом.
Этот сценарий также является демонстрацией лямбда-функций.
Как указано выше, если мы отсортируем список лидеров по длине каждого имени, простым способом будет передать лямбда-функцию в аргумент key
.
Другой распространенный сценарий использования - это сортировка словаря по его ключам или значениям.
Использование 4: немедленно вызвать его
Выражение немедленно вызываемой функции (IIFE) - это идиома из JavaScript. Лямбда-функции в Python также поддерживают этот трюк. Мы можем сразу запустить лямбда-функцию следующим образом:
>>> (lambda x,y:x*y)(2,3) 6
Однако для удобства чтения и поддержки лучше использовать этот трюк только в интерактивном интерпретаторе Python.
Кстати, если вы знакомы с уловками подчеркивания в Python, вам также доступен следующий способ.
>>> lambda x,y:x*y <function <lambda> at 0x7fc319102d30> >>> _(2,3) 6
Использование 5: нанесите его на закрытие
Замыкание - это мощная функция функционального программирования, которая также доступна в Python. Поскольку речь идет о вложенных функциях, мы можем использовать лямбда-функции, чтобы сделать программы более понятными.
Ниже приведен пример использования закрытия:
Как мы можем использовать лямбда-функцию, чтобы упростить приведенный выше код?
Как показано в приведенном выше примере, когда мы используем вложенные функции, лямбда-функция может помочь нам написать более читаемый и чистый код.
Если вам еще не известны замыкания в Python, не беспокойтесь, ознакомьтесь со следующим руководством:
Заключение
Лямбда-функция в Python дает нам больше гибкости и возможностей для разработки методов. Одним словом, мы должны быть знакомы с пятью вышеупомянутыми распространенными вариантами использования, чтобы применять их правильно и не злоупотреблять.
Спасибо за внимание. Если вам это нравится, подпишитесь на меня и ознакомьтесь с другими замечательными руководствами по Python ниже: