Функция lambda
Функция lambda
- это понятие, заимствованное из математики, более конкретно, из части, называемой лямбда-исчислением, но эти два явления не одинаковы.
Математики используют лямбда-исчисление во многих формальных системах, связанных с логикой, рекурсией или доказуемостью теорем. Программисты используют функцию lambda
, чтобы упростить код, сделать его более понятным и простым.
Функция lambda
- это функция без имени (ее также можно назвать анонимной функцией). Конечно, такое утверждение сразу же поднимает вопрос: как использовать то, что не может быть идентифицировано?
К счастью, это не проблема, так как Вы можете назвать такую функцию, если Вам действительно нужно, но на самом деле во многих случаях функция lambda
может существовать и работать, оставаясь полностью анонимной. р>
Объявление функции lambda
никак не похоже на обычное объявление функции - убедитесь сами:
lambda parameters : expression
Такое предложение возвращает значение выражения, если принять во внимание текущее значение текущего аргумента lambda
.
Как обычно, будет полезен пример. Наш пример использует три функции lambda
, и дает им имена. Посмотрите на это внимательно:
two = lambda: 2
sqr = lambda x: x * x
pwr = lambda x, y: x ** y
for a in range(-2, 3):
print(sqr(a), end=" ")
print(pwr(a, two()))
Давайте проанализируем его:
- первая
lambda
- это анонимная функция без параметров, которая всегда возвращает2
. Поскольку мы присвоили его переменной с именемtwo
, мы можем сказать, что функция больше не является анонимной, и мы можем использовать имя для ее вызова. - вторая является анонимной функцией с одним параметром, которая возвращает значение аргумента в квадрате. Мы тоже назвали это так.
- третья
lambda
принимает два параметра и возвращает значение первого, возведенное в степень второго. Имя переменной, которая содержитlambda
, говорит само за себя. Мы не используемpow
, чтобы избежать путаницы со встроенной функцией с тем же именем и той же целью.
Программа дает следующий вывод:
4 4
1 1
0 0
1 1
4 4
output
Этот пример достаточно ясен, чтобы показать, как объявляются lambda
и как они ведут себя, но он ничего не говорит о том, зачем они нужны, и для чего они используются, поскольку все они могут быть заменены на привычные функции Python.
В чем выгода?