Ответ
Функция высшего порядка (Higher-Order Function) — это функция, которая соответствует хотя бы одному из следующих критериев:
- Принимает одну или несколько функций в качестве аргументов.
- Возвращает другую функцию в качестве результата.
Это ключевая концепция функционального программирования, которая позволяет создавать более гибкий, модульный и переиспользуемый код.
Пример 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()
и декораторы.