Когда функция не является функцией

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

Прорыв «А-Ха»: лямбда-функции

Если вы хорошо ориентируетесь в синтаксисе и понимаете, как некоторые из основных методов и функций работают в Python, изучение того, что и как работает лямбда-функция, может помочь облегчить некоторые из этих излишне сложных проблем при работе с «простыми функциями». . Всегда полезно строить весь свой код, заключенный в функции, но иногда вы хотите сделать что-то действительно простое и не хотите проходить через формальности определения новой функции... Вот тут-то и появляется лямбда-функция. Лямбда-функции позволяют объявить анонимную функцию с аргументами и выражением. Для простых рутинных манипуляций лямбда-функция может стать идеальным вариантом в отличие от построения стандартной функции.

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

Базовая форма лямбда-функции и синтаксис

  1. Переменная для назначения — это необязательно в том, как вы хотите реализовать лямбда-функцию, но вы можете назначить ее переменной и использовать эту переменную для дальнейших вычислений и манипуляций.
  2. Вызов функции — просто используйте лямбда для реализации функции
  3. Аргументы для функции. У вас может быть несколько аргументов, но обычно не более двух является хорошим практическим правилом для лямбда-функций. Если вам нужно больше аргументов, вы можете подумать о создании стандартной функции вместо этого.
  4. Выражение — лямбда-функции предназначены для записи в одну строку кода (поэтому они могут помочь упростить короткие небольшие фрагменты кода).
  5. Назначение аргумента IFFE — аргументы IFFE (немедленно вызываемое функциональное выражение) используются, как следует из аббревиатуры, для запуска функции с аргументами, являющимися этими значениями. Этот раздел является необязательным, так как вы можете вызывать лямбда-функцию и назначать значения аргументов, как в традиционной функции, как показано в следующем блоке кода ниже.

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

x = (lambda x, y: x + y)
z = x(2,3)
print(z)
...
5

Различные способы реализации лямбда-функций:

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

rank_list = sorted(score_mean.items(), 
                   reverse=True, 
                   key=lambda x: x[1])

Итак, в новом списке с именем «rank_list» мы используем лямбда-функцию для сортировки на основе второго элемента значений словаря, score_mean.

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

distance = (lambda x, y: 
(1 - np.dot(x, y) / (np.linalg.norm(x) * np.linalg.norm(y))))
...
for idx, vector_1 in enumerate(projected_vector):
    article_distance[articles[idx]] = distance(vector_1, vector_2)

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

Ограничения на лямбды

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

  • Поскольку лямбда-функции должны быть быстрыми однострочными, обычные операторы Python не могут использоваться в выражении.
  • Поскольку функции технически анонимны по своей природе, они не обязательно привязаны к имени.
  • Ограниченная сложность из-за элементов, упомянутых ранее: один оператор, одна строка и, вероятно, не (или не должны) включать слишком много аргументов.

Заворачивать

Лямбды — очень полезный инструмент, который нужно иметь в сумке. Они позволяют быстро и легко реализовать функции в вашем коде, но имеют некоторые ограничения в том, что они могут делать. Подумайте, когда и почему вы собираетесь их использовать, и почему обычная функция может быть не оптимальной. Как я уже упоминал в начале «С великой силой приходит большая ответственность!» То же самое относится и к лямбда-выражениям. Если у вас есть какие-либо вопросы, комментарии или отзывы, дайте мне знать! Спасибо.