← Назад к вопросам

Что такое функция высшего порядка?

2.4 Senior🔥 251 комментариев
#Тестирование

Комментарии (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-функции
Что такое функция высшего порядка? | PrepBro