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

Узнайте, как писать анонимные лямбда-функции на Python. Освойте шаблоны функционального программирования, используя map(), filter() и sorted() с синтаксисом лямбда.

Попробуйте в редакторе

Обзор

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

Синтаксис лямбда-функции прост: `лямбда-аргументы: выражение`. В отличие от стандартных функций, лямбда не имеет явного оператора возврата; выражение вычисляется и возвращается автоматически. Более того, лямбда-функции ограничены одним выражением, а это означает, что вы не можете писать в них сложные многострочные циклы, присваивания или блоки условий, что обеспечивает чистый и функциональный подход.

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

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

Сортировка сложных списков словарей и фильтрация наборов данных с помощью встроенных анонимных функций.

# Sorting using lambda
students = [
    {"name": "Alice", "grade": 88},
    {"name": "Bob", "grade": 95},
    {"name": "Charlie", "grade": 90}
]

# Sort students by grade (descending)
sorted_students = sorted(students, key=lambda s: s["grade"], reverse=True)
print("Sorted students by grade:")
for student in sorted_students:
    print(f"- {student['name']}: {student['grade']}")

# Filtering using lambda
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_numbers = list(filter(lambda x: x % 2 != 0, numbers))
print(f"\nOdd numbers: {odd_numbers}")
Терминальный выход
Sorted students by grade:
- Bob: 95
- Charlie: 90
- Alice: 88

Odd numbers: [1, 3, 5, 7]

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

  • Передача пользовательских критериев сортировки в list.sort() и sorted()
  • Применение встроенных преобразований в конвейерах обработки данных
  • Определение быстрых обратных вызовов в приложениях пользовательского интерфейса, управляемых событиями.

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

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

Да, вы можете определить несколько аргументов, разделенных запятыми, например, лямбда x, y: x + y.

Почему лямбда-функции называются анонимными?

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

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

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

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