На этом шаге мы дадим несколько советов по использованию лямбд и альтернативных конструкций.
С одной стороны, мы надеемся, что приведенный материал заинтересовал вас исследованием лямбда-функций Python. С другой стороны, по нашему мнению, пора озвучить еще одно предостережение: лямбда-функции следует применять экономно и с необычайной осторожностью.
Если вы испытываете желание применить лямбда-функцию, потратьте несколько секунд (или минут) и обдумайте, будет ли этот способ достижения нужного результата и вправду самым чистым и максимально удобным в сопровождении.
Например, делать что-то подобное для экономии пары строк кода просто глупо. Несомненно, технически все работает, и это вполне приличный "трюк". Но он порядочно смутит очередного специалиста, который в жесткие сроки должен отправить багфикс:
# Вредно: >>> class Car: кev = lambda self: print('Бум') crash = lambda self: print('Бац!') >>> my_car = Car() >>> my_car.crash() Бац!
Похожие чувства вызывают запутанные конструкции map() и filter() с использованием лямбд. Обычно гораздо лучше использовать конструкцию включения в список или в выражение-генератор:
# Вредно: >>> list(filter(lambda x: x % 2 == 0, range(16))) [0, 2, 4, 6, 8, 10, 12, 14] # Лучше: >>> [x for x in range(16) if x % 2 == 0] [0, 2, 4, 6, 8, 10, 12, 14]
Если вы заметили, что с лямбда-выражениями получаете что-то хотя бы отдаленно сложное, то лучше обратитесь к определению автономной функции с подходящим именем.
В конечном счете экономия нескольких нажатий клавиш не будет иметь значения, зато ваши коллеги (и вы сами в будущем) оценят чистый и удобочитаемый код больше, чем лаконичное колдовство.
На следующем шаге мы рассмотрим подведем итог по изученному материалу.