Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Освоение лямбда-функций Python: практические примеры и лучшие практики

Освоение лямбда-функций Python: практические примеры и лучшие практики

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

Что такое лямбда-функция?

Лямбда — это функция, определённая с помощью ключевого слова lambda вместо def. Она принимает ноль или более параметров и возвращает значение единственного выражения. Поскольку тело представляет собой выражение, лямбда не может содержать инструкций или несколько строк.

У каждой лямбды есть три основные части:

Например, lambda x, y: x + y складывает два числа. Хотя лямбда анонимна, её можно присвоить переменной, передать другой функции или вызвать сразу.

Как написать лямбду

Формальный синтаксис:

lambda p1, p2, ... : expression

Обратите внимание на отсутствие скобок вокруг параметров. Выражение может использовать любую допустимую Python-операцию.

Пример 1: Простое сложение

adder = lambda x, y: x + y
print(adder(1, 2))  # → 3

Пример 2: Проверка объекта лямбды

string = 'some kind of a useless lambda'
print(lambda string: print(string))  # → <function <lambda> at 0x...>

Здесь лямбда никогда не вызывается; print отображает объект функции, который возвращает лямбда.

Пример 3: Сразу вызываемая лямбда (IIFE)

(lambda x: print(x))('IIFE in action')  # → IIFE in action

Оборачивание определения в скобки и добавление скобок после него вызывает лямбду немедленно.

Пример 4: Лямбды против обычных функций

# Обычная функция
def printer(arg):
    return print(arg)

# Лямбда, вызывающая функцию
guru(lambda: printer('Lambda call'))  # → Lambda call

Оба фрагмента дают одинаковый вывод, но версия с лямбдой лаконичнее, когда нужен разовый вызов.

Использование лямбд с встроенными функциями

Лямбды проявляют себя, когда передаются как колбэки функциям высшего порядка. Ниже приведены распространённые паттерны.

Сразу вызываемое функциональное выражение (IIFE) в Python

(lambda x: x + x)(2)  # → 4

Filter

Функция filter сохраняет элементы, удовлетворяющие предикату.

sequences = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1]
filtered = filter(lambda x: x > 4, sequences)
print(list(filtered))  # → [10, 8, 7, 5, 11]

Map

Функция map преобразует каждый элемент.

sequences = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1]
squared = map(lambda x: x * x, sequences)
print(list(squared))  # → [100, 4, 64, 49, 25, 16, 9, 121, 0, 1]

Reduce

Используйте reduce для накопления единственного значения из последовательности.

from functools import reduce
sequences = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, sequences)
print(product)  # → 120

Когда использовать (и избегать) лямбд

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

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

Лямбды против обычных функций

ОсобенностьЛямбдаОбычная функция
Синтаксисlambda x: x + xdef add(x): return x + x
ТелоТолько одно выражениеНесколько инструкций допустимы
ИменованиеАнонимная (нет идентификатора)Должна иметь имя
ВозвратНеявный из выраженияЯвный с return
Сценарий использованияКороткая, разовая логикаПовторно используемая, сложная логика

Вывод

Python

  1. Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
  2. Lambda-функции в Python: практическое руководство по анонимным функциям
  3. Замыкания в Python: как вложенные функции захватывают переменные
  4. Перегрузка операторов в C++: практическое руководство с примерами кода
  5. Функции в C++: подробное объяснение с практическими примерами кода
  6. Функция print() в Python: практическое руководство с примерами
  7. Мастерство метода strip() в Python: подробное руководство и практические примеры
  8. Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
  9. Мастерство строк форматирования format() в Python: понятные примеры
  10. Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы