Лямбда-функция - это анонимная функция. Это то же самое, что def в обычной функции Python, но не требует имени.

Лямбда-функция - это анонимная функция. Это то же самое, что def в обычной функции Python, но не требует имени.

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

  1. Уменьшите количество строк кода.
  2. Лямбда - это временная функция на короткий период времени.
  3. Обычно используется внутри другой функции, такой как filter, map и reduce. или внутрь. применить в пандах.
  4. Вы можете определить и вызвать его сразу в конце определения. Этого нельзя сделать с помощью функций def.

В чем разница между def и lambda?

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

лямбда - это выражение, а не утверждение. а тело лямбды - это отдельное выражение, а не блок операторов.

С другой стороны, выражение def создает функцию, которая будет вызвана позже, но возвращает функцию, а не присваивает ее имени. Вот почему иногда известны лямбды. как анонимные (т. е. безымянные) функции.

Как написать лямбда-выражение?

лямбда аргумент1, аргумент2,… аргументN : выражение с использованием аргументов.

Примечание. Обычно в синтаксисе функции def отсутствует оператор возврата.

Пример 1

С def

>>> def func(x, y, z): return x + y + z
>>> func(1, 3, 4)
8

С лямбдой

>>> func= lambda x, y, z: x + y + z
>>> func(1, 3, 4)
8

Пример 2

# calculate squares using lambda
squares = lambda x: x*x
print(‘Using lambda: ‘, squares(5))
25

Лямбды могут иметь 0 выражений

Лямбды могут принимать 0 или 1 выражение не более!

Пример 3

x = lambda : “Test Hello World!”
print(x())
Test Hello World!

Лямбды тоже могут быть вложенными

Я бы хотел избежать вложенных лямбд. За счет удобочитаемости.

Пример 4

>>> action = (lambda x: (lambda y: x + y))
>>> act = action(99)
>>> act(3)
102
>>> ((lambda x: (lambda y: x + y))(99))(4)
103

Заключение

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

Ссылка

  1. Изучение Python: мощное объектно-ориентированное программирование, Марк Лутц

2. W3schools, https://www.w3schools.com/python/python_lambda.asp