В Python анонимные функции, известные как лямбда-функции, позволяют создавать небольшие, одноразовые функции без имени. Они особенно полезны в ситуациях, когда требуется простая функция для кратковременного(разового) использования, и её определение традиционным способом может быть избыточным. В этой статье мы рассмотрим, как создавать и использовать анонимные функции в Python.
Что такое лямбда-функция?
Лямбда-функция — это небольшая анонимная функция, которая определяется с помощью ключевого слова lambda
. В отличие от обычных функций, которые создаются с использованием ключевого слова def
, лямбда-функции ограничены одним выражением и не требуют имени.
Синтаксис лямбда-функции
lambda arguments: expression
lambda
— ключевое слово, обозначающее создание лямбда-функции.arguments
— список параметров, которые принимает функция.expression
— выражение, которое вычисляется и возвращается.
Пример
Создадим лямбда-функцию, которая возвращает квадрат числа:
square = lambda x: x ** 2
print(square(5)) # Вывод: 25
Использование лямбда-функций
Лямбда-функции часто используются в качестве аргументов для других функций, таких как map()
, filter()
, sorted()
, и reduce()
. Они позволяют быстро и кратко определять простые функции непосредственно в месте их использования.
Примеры использования
Функция map()
Функция map()
применяет заданную функцию ко всем элементам последовательности и возвращает итератор с результатами.
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers)) # Вывод: [1, 4, 9, 16, 25]
Функция filter()
Функция filter()
возвращает итератор, состоящий из элементов, для которых заданная функция возвращает True
.
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # Вывод: [2, 4, 6]
Функция sorted()
Функция sorted()
сортирует элементы последовательности по заданному ключу.
students = [("Alice", 85), ("Bob", 75), ("Charlie", 95)]
sorted_students = sorted(students, key=lambda student: student[1])
print(sorted_students)
# Вывод: [('Bob', 75), ('Alice', 85), ('Charlie', 95)]
Лямбда-функции и функции высшего порядка
Лямбда-функции часто используются с функциями высшего порядка — функциями, которые принимают другие функции в качестве аргументов или возвращают их.
Пример
Создадим функцию высшего порядка, которая принимает функцию и список, и применяет эту функцию ко всем элементам списка:
def apply_function(func, data):
return [func(item) for item in data]
numbers = [1, 2, 3, 4, 5]
result = apply_function(lambda x: x ** 3, numbers)
print(result) # Вывод: [1, 8, 27, 64, 125]
Когда использовать лямбда-функции?
Лямбда-функции полезны в следующих ситуациях:
- Когда нужна простая функция для одноразового использования.
- Когда использование обычной функции с
def
выглядит громоздким. - В комбинации с функциями высшего порядка для краткости и удобства.