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

Содержание
Введение
Примеры
Отличия от обычных функций
Похожие статьи
/code/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
Легко доступны для тестирования Сложны для тестирования так как их не вызвать по имени

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

Похожие статьи
Лямбда функции
Функции
Python

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: