Лямбда функции в Python

Contents
Введение
Примеры
Отличия от обычных функций
Похожие статьи
/python/basics/docstring/

Введение

Лямбда функции названы так в честь лямбда исчисления, созданного америкаским математиком Алонзо Чёрчем в тридцатых годах ХХ-го века.

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

В Python лямбды это анонимные вызываемые объекты. Использовать лямбды часто полезно, но делать это нужно осторожно, чтобы код не стал нечитаемым.

Пример

>>> (lambda x: x + 1)(2)

3

Как это работает:

(lambda x: x + 1)(2) = lambda 2: 2 + 1 = 2 + 1 = 3

>>> add_one = lambda x: x + 1
>>> add_one(2)

3

Пример применения лямбды для создания ключа при сортировке функцией sorted() .

scientists = [ 'Marie Curie', 'Dmitri Mendeleev', 'Nikolay Basov', 'Alexander Popov', 'Igor Kurchatov', 'Niels Bohr', 'Oliver Heaviside','Max Planck', 'Isaac Newton', 'Rosalind Franklin' ] # Имя из строки преобразуется в список # из списка достаётся последний элемент # который используется в качестве ключа print(sorted(scientists, key=lambda name: name.split()[-1])) # Лямбда это выражение, которое возвращает # вызываемый объект (callable object) last_name = lambda name: name.split()[-1] print(last_name) print(last_name("Nikola Tesla")) # Если не использовать лямбду # функции по извлечению имени # и фамиил будут выглядеть так: def last_name(name): return name.split()[-1] def first_name(name): return name.split()[0] print(l_name("Nikola Tesla")) print(first_name("Nikola Tesla"))

['Nikolay Basov', 'Niels Bohr', 'Marie Curie', 'Rosalind Franklin', 'Oliver Heaviside', 'Igor Kurchatov', 'Dmitri Mendeleev', 'Isaac Newton', 'Max Planck', 'Alexander Popov'] <function <lambda> at 0x7f2ccf9c3af0> Tesla Tesla Nikola

Отличия от обычных функций

Функции Лямбды
def name(args): body lambda args: expr
Инструкция (statement), которая определяет функцию и связывает её с именем Выражение (expression), которое вычисляется (evaluates) в функцию
Обязана иметь имя Не имеет имени
Аргументы заключены в круглые скобки и перечислены через запятую Список аргументов, разделённых запятыми заканчивается двоеточием
Поддерживается ноль и более аргументов. Ноль аргументов означает пустые скобки Поддерживается ноль и более аргументов. Ноль аргументов означает двоеточие сразу после lambda (lambda:)
Тело функции это блок (с правильным отступом) инструкций Тело лямбды это одно выражение
Чтобы функция возвращала что-то отличное от None нужна инструкция return Возвращаемое значнеие определяется в выражении, содеражащемся в теле. Инструкцию return использовать нельзя.
Может иметь docstring Не может иметь docstring
Легко доступны для тестирования Сложны для тестирования так как их не вызвать по имени

Примеры применения

Related Articles
Лямбда функции
Функции
Python

Search on this site

Subscribe to @aofeed channel for updates

Visit Channel

@aofeed

Feedbak and Questions in Telegram

@aofeedchat