Лямбда (lambda)

21 декабря 2019



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

Cинтаксис lambda выражения в Python:

lambda arguments: expression

Пример 1:

lamb = lambda n: n*2
print(lamb(5))

Туже функцию можно описать через def:

def mySun(x,y):
    return x+y

print(mySun(50,100))

Часто лямбда используют, как анонимную функцию внутри другой.
Пример 2:

def myfunc(n):  
    return lambda a: a + n

lamb = myfunc(5)
print(lamb(10))

Вот тот же функционал через обычную def функцию:

def myfunc(x,y):
    return x+y

print(myfunc(5,10))

Часто лямбда позволяет уменьшить объём кода, не теряя при этом его читаемости (пример 1). Но так же часто при использования лямбда функций код менее понятен и более запутан (пример 2). В целом использование лямбд стоит, только если вы четко понимаете, что написание кода через обычную def функцию, или пару строк кода внутри функции, будет менее эффективно и читаемо.

Лямбда отличаются от def по следующим признакам:

Могут содержать только одну строку кода;
Возвращаются значение автоматически;
Не могут содержать docstring и иметь наименование;
Синтаксис отличается и не слишком удобен.