Вступление

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

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]

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



8 уровней использования понимания списков в Python
Полное руководство от элементарного до глубокого medium.com



Использование 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 ниже: