Как использовать функции Python Lambda: 5-минутное руководство

функции Python Lambda Программирование и разработка

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

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

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

Что такое lambda functions?

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

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

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

Вот почему некоторые программисты называют лямбды «функциями одного выражения».

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

Лямбда-функция не требует имени во время определения функции

История: Лямбда-выражения происходят от концепций лямбда-исчисления, модели вычислений, изобретенной Алонзо Чёрчем.

Хотя Python не является полностью функциональным языком, он добавил много функциональных концепций. В 1994 году filter(), map(), reduce()и lambdaоператор были добавлены к синтаксису. Другие объектно-ориентированные языки программирования, такие как Java и JavaScript, также добавили лямбда-выражения в более поздних версиях.

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

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

Это делает их полезными при использовании наряду с функциями высшего порядка, которые требуют объекты функции в качестве аргументов, например map(), filter()илиfunctools.reduce()

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

  • Возврат функции из функции
  • Сортировка по альтернативному ключу
  • Объединение элементов повторяющейся последовательности с reduce()

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

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

Как реализовать lambda functions Python

Лямбда-функция объявляется иначе, чем обычная функция. В Python лямбда-функции обладают следующими уникальными характеристиками:

  • Он может содержать только выражения
  • Он не может включать утверждения в свое тело
  • Записывается в одну строку
  • Он не поддерживает аннотации типов.
  • Его можно сразу вызвать

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

lambda arguments: expression

Лямбда-выражение может иметь любое количество аргументов (включая ни одного). Например:

lambda: 1 # No arguments
lambda x, y: x + y
lambda a, b, c, d: a*b + c*d 

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

lambda x: x[0]*x[1] 

lambda Ключевое слово идентифицирует лямбда — выражение. В приведенном выше примере xэто единственный параметр. Двоеточие завершает список параметров и вводит тело функции.

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

p = [(3, 3), (4, 2), (2, 2), (5, 2), (1, 7)]
q = sorted(p, key=lambda x: x[0]*x[1])
print(q) # [(2, 2), (1, 7), (4, 2), (3, 3), (5, 2)]

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

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

area = lambda x: x[0]*x[1]

Нет явных преимуществ в добавлении имени функции к лямбда-функции.

Примеры lambda Python

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

Функция возведения в квадрат

# A squaring lambda function
square = lambda n : n*n
num = square(5)
print num

Функция вычитания

# A subtraction lambda function with multiple arguments
sub = lambda x, y : x-y
print(sub(5, 3))

Карта с лямбдой

Лямбда Python делает mapфункцию более лаконичной.

myList = [10, 25, 17, 9, 30, -5]
# Double the value of each element
myList2 = map(lambda n : n*2, myList)
print myList2

Фильтр с лямбдой

Лямбды также могут упростить filter()функцию.

myList = [10, 25, 17, 9, 30, -5]
# Filters the elements which are not multiples of 5
myList2 = filter(lambda n : n%5 == 0, myList)
print myList2

Попробуй сам

Давайте применим то, что мы узнали до сих пор, к двум практическим примерам. Сначала напишите кусок кода, используя лямбда-выражение, которое добавляет 10 к аргументу aи возвращает результат. Вы можете выбрать любое значение a. Попробуйте сами, прежде чем проверять решение.

x = # type your code here
print # type your code here

Для другого действия используйте лямбда для умножения aна аргумент bи возврата результата. Вы можете выбрать числа муравьев для умножения при печати. Попробуйте сами, прежде чем проверять решение.

x = # write your code here
print # write your code here
Читайте также:  Использование перечисления в C++
Оцените статью
bestprogrammer.ru
Добавить комментарий