Когда функция не является функцией
Лямбда-функции — это очень мощные элементы в мире Python, которые устраняют пробел в том, нужно ли вам формально определять функцию или нет. Я бы назвал лямбда-функцию в Python своего рода козырной картой, помогающей вам реализовать что-то быстро и легко, без формального определения функции и какой-либо дополнительной работы, которая потребовалась бы. Помня о том, что «С большой силой приходит большая ответственность», не менее важно знать, когда можно, а когда не следует использовать лямбда-функцию.
Прорыв «А-Ха»: лямбда-функции
Если вы хорошо ориентируетесь в синтаксисе и понимаете, как некоторые из основных методов и функций работают в Python, изучение того, что и как работает лямбда-функция, может помочь облегчить некоторые из этих излишне сложных проблем при работе с «простыми функциями». . Всегда полезно строить весь свой код, заключенный в функции, но иногда вы хотите сделать что-то действительно простое и не хотите проходить через формальности определения новой функции... Вот тут-то и появляется лямбда-функция. Лямбда-функции позволяют объявить анонимную функцию с аргументами и выражением. Для простых рутинных манипуляций лямбда-функция может стать идеальным вариантом в отличие от построения стандартной функции.
Дьявол в деталях заключается в том, что чрезмерное или неправильное использование лямбда-функций может привести к головной боли в будущем, когда дело доходит до устранения неполадок, поскольку вам может потребоваться искать код, чтобы найти ошибку и/или внести изменения/обновления в код. Лямбда-функции следует использовать разумно и там, где это уместно.
Базовая форма лямбда-функции и синтаксис
- Переменная для назначения — это необязательно в том, как вы хотите реализовать лямбда-функцию, но вы можете назначить ее переменной и использовать эту переменную для дальнейших вычислений и манипуляций.
- Вызов функции — просто используйте лямбда для реализации функции
- Аргументы для функции. У вас может быть несколько аргументов, но обычно не более двух является хорошим практическим правилом для лямбда-функций. Если вам нужно больше аргументов, вы можете подумать о создании стандартной функции вместо этого.
- Выражение — лямбда-функции предназначены для записи в одну строку кода (поэтому они могут помочь упростить короткие небольшие фрагменты кода).
- Назначение аргумента 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 не могут использоваться в выражении.
- Поскольку функции технически анонимны по своей природе, они не обязательно привязаны к имени.
- Ограниченная сложность из-за элементов, упомянутых ранее: один оператор, одна строка и, вероятно, не (или не должны) включать слишком много аргументов.
Заворачивать
Лямбды — очень полезный инструмент, который нужно иметь в сумке. Они позволяют быстро и легко реализовать функции в вашем коде, но имеют некоторые ограничения в том, что они могут делать. Подумайте, когда и почему вы собираетесь их использовать, и почему обычная функция может быть не оптимальной. Как я уже упоминал в начале «С великой силой приходит большая ответственность!» То же самое относится и к лямбда-выражениям. Если у вас есть какие-либо вопросы, комментарии или отзывы, дайте мне знать! Спасибо.