Module (11%)
Section (63%)

Функция 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.

В чем выгода?