Рубрики
Без рубрики

Функции Python Lambda Все греческий Тебе?

Учитесь любить свою лямбду! Функции лямбда в Python – это простые однострочные функции без имени (и, следовательно, называется анонимной функцией), которые могут принимать много аргументов, но оценивают только одно выражение. Они быстро, короткие и простые и могут помочь вам написать более чистый код Pythonic ‘. Если бы я хотел узнать … Функции Python Lambda Все греческий Тебе? Подробнее “

Автор оригинала: David Yeoman.

Учитесь любить свою лямбду!

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

Если бы я хотел узнать лямбдас как новичок Python Programmer, и вам повезло, приведенный выше текст является примером того, что ваш поиск Google может доставить. Аннотация, немного жаргон-у для новичка, но не слишком неясных. Однако, если вы не повезли и пошли прямо к источнику в документации Python, вы получили это:

Чего-чего?

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

Но сначала – почему лямбда?

Так названа после 11 TH Письмо в греческом алфавите, те из вас, кто являются математическими гиками, знают, что американский математик Алонзо-церковь изобрел лямбда исчисления во время учебы в основы математики в 1930-х годах, и именно он решил использовать письмо в качестве дескриптора. В одной точке Гвидо Ван Россом Джентльмен, который создал Python, планировал удалить функцию лямбда из нового Python 3.0 Однако он выжил и остается доступным для нас. Учитывая у нас еще есть, лучше всего мы знаем, как и когда его использовать.

«Классическая» функция Python

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

Следующий код показывает определение функции, которая примет переменную «возраст» и возвращает одну из двух разных ответов, в зависимости от того, является ли человек более 18 или нет. Затем мы называем функцию и вернем ответ.

def age_verification(age):
    if age < 18:
        return 'Junior'
    else:
        return 'Adult'

print(age_verification(12))
# Junior

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

Ламбда Функция Основы

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

Когда я впервые начал кодировать, я действительно изо всех сил пытался понять макияж лямбда. Это просто не имело смысла для меня в то время, и это не было, пока я не наткнулся на простой рисунке, что все было на месте для меня. Я реконструировал рисунок ниже, в то время как подвергается риску ребёнка точка, сравнивает компоненты в функции для тех, кто в лямбде. Функция «Имя» (красная), аргумент (зеленый) и выражение (желтый). Если есть кто-то еще, кто, как я, просто не получил его сначала – я надеюсь, что эта диаграмма помогает демистифицированию вещей несколько.

Как вы можете видеть в коде выше, чтобы написать лямбда, вы должны использовать слово лямбда, за которым следует количество аргументов, которые вы собираетесь обрабатывать. Затем введите двоеточие, пробел, а затем «выражение» или действия, которые вы хотите принять на аргументы.

В следующем примере мы использовали только один аргумент, х. Выражение умножает x на 2 и добавляет 42. Мы проходим 5 к выражению, используя функцию печати, которые когда-то оценивали, возвращает 52.

a = lambda x: x * 2 + 42

print(a(5))
# Prints 52

Давайте добавим еще несколько аргументов:

z = lambda a, b, c: 2 * a + b – c

print(z(10, 4, 2))
# Prints 22

Применение лямбда

Просто да? Итак, теперь вы видите структуру лямбда, давайте попробуем применить один на пример взрослого вещества, который мы использовали ранее. Мы знаем, что у нас есть один аргумент, в возрасте, а выражение, а затем необходимо оценить, меньше или больше 18 лет.

Сначала определенная функция из нашего предыдущего примера.

def age_verification(age):
    if age < 18:
        return 'Junior'
    else:
        return 'Adult'

print(age_verification(12))

# returns Junior

Если мы переписали эту функцию как лямбда, это может выглядеть следующее.

a = lambda x: 'Adult' if x > 18 else 'Junior'

print(a(12))
# returns Junior

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

  • Время выполнения функций: 3.207399999999305E-05.
  • Время выполнения лямбда: 1.0905000000005494e-05

Так что дал этот сценарий, вот преимущества лямбда, как я их вижу.

  • Шесть строк кода сокращены до двух
  • Нет необходимости назвать функцию, поскольку она не будет использоваться снова
  • Нет необходимости «вернуть» значение с лямбдой, это неявно в функции лямбда
  • Чистый краткий код, являющийся менее многословным, чем определенная функция, и, возможно, легче читать
  • Быстрее! Из времен исполнения выше мы видим, что лямбда в три раза быстрее

То, что нужно запомнить

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

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

  • Используя лямбда с карта () будет применять функцию к каждому элементу в свою очередь;
  • Используя лямбда с Фильтр () вернет элементы, удовлетворяющие условию выраженный

Вот два примера, используя карту () и фильтр ().

lst = [11, 12, 13, 14, 15, 16, 17, 18]

# Use map() to carry out an action on each item in lst
amended_list = map(lambda x: x * 2 - 16, lst)

print(list(amended_list))
# Returns [6, 8, 10, 12, 14, 16, 18, 20]


# Use filter() to extract the elements in lst meeting the condition
over_15 = filter(lambda x: x > 15, lst)

print(list(over_15))
# Returns [16, 17, 18]

Просто потому, что вы можете – не значит, что вы должны!

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

Вот вещь; Хотя нет никаких сомнений, что они могут облегчить чтение вашего кода, они также могут сделать его более непостижимым. Их использование может заставить вас выглядеть так, как вы знаете, что вы делаете в качестве кодера, но они также могут выделить вас как новичок, когда используется без необходимости. Несомненно, обеспечивая быстрый и простой способ решить немедленную проблему, но могут быть более читаемые методы достижения того же результата в одной строке.

Суть заключается в том, чтобы думать о тех, кто следит вслед за которым может потребоваться прочитать код. У меня есть два правил правил для использования лямбдаса.

  1. Это использование лямбда функции самого быстрого способа решения проблемы? При написании лямбда становится довольно сложной или требует значительной мысли, может быть лучше определить нормальную функцию и использовать вместо этого.
  2. Насколько читабельно (или неясно) функция Lambda делает ваш код. Для вас может показаться в порядке, пока код «загружена» в вашей голове, и вы хорошо понимаете. Это может быть не так очевидно недели, месяцы или даже лет спустя, когда другие должны иметь смысл вашего намерения. Обычные функции имеют имя, предназначенное для очистки намерения следующего кода. Лямбдас, будучи анонимным, не имею эту полезность, и это может быть трудно немедленно понять намерение.

Так что у вас есть

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

Счастливое кодирование!

Оригинал: “https://blog.finxter.com/are-python-lambda-functions-all-greek-to-you/”