Функция высшего порядка принимает функции или возвращает их. Декоратор — более конкретный приём: получает объект функции или класса и возвращает объект, которым тот заменяется.
Чем отличаются декораторы от функций высшего порядка?
Функция высшего порядка принимает функции или возвращает их. Декоратор — более конкретный приём: получает объект функции или класса и возвращает объект, которым тот заменяется.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Функция высшего порядка принимает функции или возвращает их. Декоратор — более конкретный приём: получает объект функции или класса и возвращает объект, которым тот заменяется.
Запись @decorate над функцией примерно соответствует func = decorate(func) после её определения. Декоратор может оборачивать вызов, регистрировать функцию или возвращать её без изменений. Не каждая функция высшего порядка является декоратором: например, функция, применяющая переданный callback к коллекции, ничего не декорирует. У декоратора с параметрами внешний вызов обычно создаёт и возвращает сам декоратор.