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

Узнайте, как использовать лямбда-функции в Python. Освойте анонимные функции, встроенные обратные вызовы и сортировку данных списка с помощью лямбда-ключей.

Попробуйте это решение в редакторе

Обзор

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

Лямбда-функция определяется ключевым словом `lambda`, за которым следует список аргументов, двоеточие и одно выражение. Синтаксис: «лямбда-аргументы: выражение». В отличие от функций def, лямбда-выражения не требуют оператора return; результат выражения возвращается автоматически. Они ограничены одной логической линией, что делает их идеальными для простых одноразовых операций.

Лямбда-функции чаще всего используются в качестве аргументов функций более высокого порядка, таких как sorted(), map() и filter(). Например, вы можете передать лямбда-функцию аргументу `sorted()` `key`, чтобы определить собственные критерии сортировки, или использовать их в качестве облегченных функций обратного вызова внутри графических или управляемых событиями приложений.

Код и вывод выполнения

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

# 1. Simple lambda function assigned to a variable
double = lambda x: x * 2
print("Double of 5:", double(5))

# 2. Multi-argument lambda
add = lambda x, y: x + y
print("Sum of 3 + 4:", add(3, 4))

# 3. Using lambda as a sorting key (sorting by age)
people = [
    {"name": "Alice", "age": 28},
    {"name": "Bob", "age": 22},
    {"name": "Charlie", "age": 35}
]
people.sort(key=lambda person: person["age"])
print("Sorted by age:", people)
Терминальный выход
Double of 5: 10
Sum of 3 + 4: 7
Sorted by age: [{'name': 'Bob', 'age': 22}, {'name': 'Alice', 'age': 28}, {'name': 'Charlie', 'age': 35}]

Пошаговая реализация

  • Напишите ключевое слово лямбда, а затем имена параметров, разделенных запятыми.
  • Поставьте двоеточие, а затем одно выражение, которое вы хотите вычислить и вернуть.
  • Передайте лямбду напрямую в качестве обратного вызова таким функциям, как sorted(), map() или filter().

Часто задаваемые вопросы

Может ли лямбда-функция содержать циклы или несколько операторов?

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

Должен ли я назначать лямбда-функции переменным?

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

Связанные темы

Рекомендуемые ресурсы Python

Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.