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

Давайте разберемся, что выиграет от этой статьи:

  • Подробное понимание Lambda
  • как использовать вместе с примером

Что такое лямбда в Python?

Лямбда-функция в Python - это анонимная функция или функция, не имеющая имени. Это в основном однострочная и ограниченная функция. Как и обычная функция, лямбда-функция может иметь несколько аргументов с одним выражением.

Создание лямбда-функции:

Например :

lamba arguments(a,b,…n): expression
  • В общем виде в Python
def sum(a,b):
    return a+b

print(sum(2,3))
Output : >>> 5
  • Использование лямбда в Python
sum = lambda a,b: a+b 
print(sum(2,3))
Output : >>> 5

В приведенном выше коде sum = lambda a,b: a+b - это лямбда-функция. a и b - переменные - это аргумент, а a+b - это выражение, которое выполняется, и результат выражения возвращается без синтаксиса возврата. Выражение получает добавление входных параметров. Предоставление 2,3 в качестве параметров, которые добавлены 2 и 3. Можно увидеть, как в общем может быть написана одна и та же логика и при использовании лямбда с точки зрения строк кода и исполнения.

Но строки кода - единственная причина использовать Lambda в Python? Есть ли причина ? Ответ - большой ДА.

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

Функция высшего порядка - это функция, которая принимает функцию в качестве аргумента или возвращает функцию. Функция высшего порядка отличается от функций первого порядка, которые не принимают функцию в качестве аргумента и не возвращают функцию в качестве вывода. map, filter и reduce - функции высшего порядка. Лямбда отлично работает как параметр для функций более высокого порядка, если вы используете ее с ограничениями

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

  • Другой способ вызвать функцию Lambda - анонимно без назначения переменной и передачи аргументов:
(lambda x, y: x + y)(2, 3)

Пример,

def square(a):
    return (lambda x: x*x)(a)

print(square(2))
  • Еще один пример вычисления квадрата для всех элементов списка:
def square(x): 
    return lambda : x*x

functions = [square(i) for i in [1,2,3,4,5,6]]
for function in functions: 
    print(function())
Output:
1                                                                                                                                                 
4                                                                                                                                                 
9                                                                                                                                                 
16                                                                                                                                                
25
  • Существует еще одна концепция, называемая каррированием, которая означает, что функции выполняют любое количество вычислений и данных в единую реальную функцию, которая возвращает ожидаемый результат. Вот как я могу преобразовать приведенный выше пример вычисления квадрата с помощью каррирования.
functions = [lambda i=i: i*i for i in range(1, 6)]
for function in functions:
   print(function())

В этом примере каррирования i=i - позиционный аргумент. Если вы назначите i=1, весь вывод станет 1. Здесь мы присваиваем i переменной i из выражения итерации for i in range(1,6). Как вы можете видеть, мы передаем аргумент не из function(), а в лямбда-объявлении на момент назначения значения с помощью i=i.

Другой пример позиционного аргумента:

В этом примере z значение по умолчанию - 3. при передаче аргументов нельзя изменить положение 1-го и 2-го аргумента. Во-первых, аргумент не по умолчанию не должен следовать за аргументом по умолчанию означает, что вы можете использовать его как (lambda x=2, y, z: x + y + z)(1, 2), он вызовет ошибку, как показано ниже:

File "main.py", line 1 print((lambda x=2, y, z: x + y + z)(1, 2)) ^ SyntaxError: non-default argument follows default argument

Это может быть так print((lambda x, y=2, z=3: x + y + z)(1)), потому что в этом значении по умолчанию следуют друг за другом.

Заключение Теперь вы все знаете, как использовать лямбда-функции Python, и несколько советов:

  • Напишите лямбды Python и используйте анонимные функции
  • Выбирайте с умом между лямбдами или обычными функциями Python
  • Избегайте чрезмерного использования лямбда-выражений

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

Если вам потребуется помощь по этой статье или более глубокое понимание Lambda, обратитесь к моему обработчику твиттера @ aviboy2006.

Ссылки:

Первоначально опубликовано на https://www.internetkatta.com.