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

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

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

Article author: Andrei Olegovich

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

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: