Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Функции высшего порядка
Функция высшего порядка — это функция, которая принимает другие функции как аргументы и/или возвращает функцию как результат. Это фундаментальная концепция функционального программирования, широко используемая в Python.
Основные характеристики
Функция высшего порядка обладает одним или двумя свойствами:
- Принимает функцию как аргумент — позволяет передавать поведение как параметр
- Возвращает функцию как результат — позволяет создавать новые функции динамически
Примеры с передачей функции как аргумента
# Простой пример с map()
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
result = map(square, numbers)
print(list(result)) # [1, 4, 9, 16, 25]
# Кастомная функция высшего порядка
def apply_twice(func, x):
"""Применяет функцию дважды к значению"""
return func(func(x))
def add_one(x):
return x + 1
print(apply_twice(add_one, 5)) # 7
Возврат функции как результата
def create_multiplier(n):
"""Возвращает функцию, которая умножает число на n"""
def multiplier(x):
return x * n
return multiplier
double = create_multiplier(2)
triple = create_multiplier(3)
print(double(5)) # 10
print(triple(5)) # 15
Встроенные функции высшего порядка в Python
# filter() — фильтрует элементы
def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5, 6]
evens = list(filter(is_even, numbers))
print(evens) # [2, 4, 6]
# reduce() — свёртка/агрегация
from functools import reduce
def multiply(x, y):
return x * y
numbers = [1, 2, 3, 4]
result = reduce(multiply, numbers)
print(result) # 24
Лямбда-функции с функциями высшего порядка
# Лямбда часто используется с map, filter, sorted
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x ** 2, numbers))
print(squares) # [1, 4, 9, 16, 25]
# Фильтрация
evens = list(filter(lambda x: x % 2 == 0, numbers))
print(evens) # [2, 4]
Декораторы — практический пример функций высшего порядка
def timing_decorator(func):
"""Декоратор — функция высшего порядка, которая оборачивает другую функцию"""
def wrapper(*args, **kwargs):
import time
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"Функция выполнялась {end - start:.4f} сек")
return result
return wrapper
@timing_decorator
def slow_function():
import time
time.sleep(0.1)
return "Done"
slow_function()
Сортировка с кастомной функцией
# sorted() — функция высшего порядка с параметром key
users = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35}
]
# Сортировка по возрасту
sorted_users = sorted(users, key=lambda u: u["age"])
print(sorted_users)
Практическое применение
Функции высшего порядка позволяют:
- Избежать дублирования кода — общая логика инкапсулируется в функцию высшего порядка
- Улучшить абстракцию — код становится более декларативным и читаемым
- Создавать гибкие системы — поведение можно конфигурировать через передачу функций
- Реализовывать паттерны — декораторы, middleware, callback-функции