DevGang
Авторизоваться

Понимание lambda-функций в Python с примерами

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

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

По сути, lambda-функция, которая принимает параметр x и возвращает его, выглядит так:

func = lambda x : x

Обратите внимание, как мы используем здесь ключевое слово lambda. И это по сути та же самая ситуация, когда функция, определенная в python, просто возвращает себя:

def func(x):
    return x

А теперь давайте приведем еще один пример того, какие другие варианты использования lambda могут быть в одной и той же строке в быстрой последовательности:

print((lambda x: x + 10)(90))
output: 
100

Как и выше, мы можем вернуть функцию, просто набрав lambda, и фактически мы можем повторно использовать ее, определив ее как другую функцию.

Например, мы можем попробовать это в простой математической операции со следующими аргументами и двумя отдельными переменными:

function = lambda x, y: x ** y
print(function(2, 3))
output: 8

Почему я должен использовать lambdas?

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

Например, давайте определим функцию, которая возвращает, будет ли каждое отправленное нами значение четным или нечетным числом:

def myfunc(n):
  return lambda a : a % n
evenOrOddNumber = myfunc(2)
if evenOrOddNumber(101) == 0:
 print(f"This number is even")
else:
    print(f"This number is odd")

Иногда мы можем использовать одну и ту же lambda-функцию по-другому. Например, давайте определим второй случай, когда число — умножается. И в этом случае давайте посмотрим результат отрицательного числа или положительного:

def myfunc(n):
  return lambda a : a * n
evenOrOddResult = myfunc(2)
positiveOrNegativeNumber = myfunc(1)
if evenOrOddResult(101):
 print(f"The result is even")
else:
    print(f"The result is odd")
    
if positiveOrNegativeNumber(-101) < 0:
 print(f"This number is negative")
else:
    print(f"This number is positive")
output: 
The result is even
This number is negative

Поскольку здесь мы хотим контролировать два отдельных случая, мы определили для функции одну lambda-функцию. И в обоих случаях он возвращал нам результаты отдельно после того, как мы запускали код Python.

Настоящая сила lambda в том, что она может вернуть состояние в однострочном выражении. Таким образом, чтобы проверить условие нечетного или четного числа, мы могли бы просто написать:

print((lambda x: x % 2 and 'this number is odd' or 'this number is even')(30))
output:
this numer is even 

Как указано выше, немедленное выполнение функции становится характеристикой lambda-функций, также известных как IIFE.

Вывод

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

На что необходимо обратить внимание?

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

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

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

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В подарок 100$ на счет при регистрации

Получить