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

Ответ

Функция высшего порядка (Higher-Order Function) — это функция, которая соответствует хотя бы одному из следующих критериев:

  1. Принимает одну или несколько функций в качестве аргументов.
  2. Возвращает другую функцию в качестве результата.

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

Пример 1: Функция как аргумент

Встроенная функция sorted() может принимать функцию key для определения логики сортировки.

words = ["яблоко", "груша", "киви", "банан"]

# Сортируем по длине слова, передавая функцию len в качестве аргумента
sorted_by_length = sorted(words, key=len)

print(sorted_by_length) 
# Вывод: ['киви', 'груша', 'банан', 'яблоко']

Здесь sorted — функция высшего порядка, а len — функция, переданная как аргумент.

Пример 2: Функция как результат

Можно создать "фабрику функций", которая генерирует и возвращает новые функции.

def power_factory(exponent):
    """Фабрика, создающая функции для возведения в степень."""
    def power(base):
        return base ** exponent
    return power

# Создаем функцию, которая возводит в квадрат
square = power_factory(2)
# Создаем функцию, которая возводит в куб
cube = power_factory(3)

print(f"5 в квадрате = {square(5)}") # Вывод: 5 в квадрате = 25
print(f"5 в кубе = {cube(5)}")     # Вывод: 5 в кубе = 125

Здесь power_factory — функция высшего порядка.

В Python к функциям высшего порядка также относятся map(), filter() и декораторы.