Share This
Связаться со мной
Крути в низ
Categories
//Лямбда-функции в Python: примеры

Лямбда-функции в Python: примеры

04.10.2021Category : Python

Лямбда-функции – это анонимные функции, которые содержат только одно выражение.

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

В Python мы обычно создаём функции так:

def my_func(a):     # Тело функции

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

Например, функция, удваивающая аргумент:

def double(x):     return x*2

Такую функцию, например, можно использовать в методе map.

def double(x):     return x*2    my_list = [1, 2, 3, 4, 5, 6] new_list = list(map(double, my_list)) print(new_list) # [2, 4, 6, 8, 10, 12]

Именно здесь целесообразно использовать лямбда-функцию, т.к. её можно создать прямо в том же месте, где она используется. А это означает меньше строк кода. Кроме того, нам не придётся создавать функцию с именем, которая будет занимать место в памяти и пригодится лишь однажды.

Как использовать лямбда-функции в Python

Как вы уже поняли, лямбды применяются там, где нужна маленькая функция на короткое время – например, в функциях высшего порядка, таких как map или filter.

Синтаксис лямбда-функции имеют следующий:

lambda args: expression

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

Обратите внимание, что лямбда-функциям нельзя дать имя, потому что они анонимные (без имени) по определению.

Аргументов в них может быть сколько угодно, но выражение в теле обязательно одно.

ljambda funkcii v python primery 678704d - Лямбда-функции в Python: примеры

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Скачать ×

Пример 1

Можно написать лямбду, которая удваивает свой аргумент: lambda x: x*2, и использовать её в функции map, чтобы удвоить все элементы в списке:

my_list = [1, 2, 3, 4, 5, 6] new_list = list(map(lambda x: x*2, my_list)) print(new_list) # [2, 4, 6, 8, 10, 12]

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

Пример 2

А ещё можно создать лямбда-функцию, которая ищет числа больше нуля: lambda x: x > 0 и использовать в filter, чтобы создать список исключительно положительных чисел.

my_list = [18, -3, 5, 0, -1, 12] new_list = list(filter(lambda x: x > 0, my_list)) print(new_list) # [18, 5, 12]

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

Пример 3

Лямбда также может быть возвращаемым значением другой функции.

Если вам потребуется создать несколько функций, умножающих числа (например, удваивающих и утраивающих), лямбда может помочь.

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

def muliplyBy (n):     return lambda x: x*n    double = multiplyBy(2) triple = muliplyBy(3) times10 = multiplyBy(10)

Лямбда-функция принимает значение n из функции multiplyBy. Таким образом, в double параметр n равен 2, в triple — 3, а в times10 – 10. Теперь при вызове полученных функций с определённым аргументом будет производиться умножение на соответствующее число.

double(6) > 12 triple(5) > 15 times10(12) > 120

Без лямбды вам бы пришлось определять внутри multiplyBy другие функции:

def muliplyBy (x):     def temp (n):         return x*n     return temp

Лямбда-функция занимает всего полстроки и увеличивает читабельность кода.

Заключение

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

Перевод статьи Lambda Function in Python – Example Syntax.

  • 0 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2020 / All rights reserved

    Связаться со мной
    Close