Курс Python → Создание функций высшего порядка

Для создания функций более высокого порядка в Python можно использовать два основных подхода: вложенные функции и вызываемые объекты. Вложенные функции — это функции, которые определяются внутри другой функции и имеют доступ к переменным внешней функции. Этот подход обычно более простой и понятный для начинающих разработчиков.

Другой способ — использование вызываемых объектов. Это объекты, которые можно вызывать как функции. Хотя этот подход может быть немного медленнее и требует больше кода, он предоставляет большую гибкость. Вызываемый объект может сохранять свое состояние между вызовами, что может быть полезно в некоторых ситуациях.

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


class CallableObject:
    def __init__(self, state):
        self.state = state

    def __call__(self):
        self.state += 1
        return self.state

# Пример использования вызываемого объекта
obj = CallableObject(0)
print(obj())  # Вывод: 1
print(obj())  # Вывод: 2

В итоге, выбор между вложенными функциями и вызываемыми объектами зависит от конкретной задачи и предпочтений разработчика. Оба подхода имеют свои преимущества и недостатки, и важно выбрать тот, который лучше подходит для конкретной ситуации.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Замена текста с помощью sub
  2. Автоматизация с Python
  3. Преобразование чисел в восьмеричную строку
  4. Генераторные выражения и islice.
  5. Модуль subprocess: запуск внешних команд
  6. Установка и использование модуля Wikipedia
  7. Использование эмодзи в Python
  8. Операторы объединения в Python 3.9
  9. Взаимодействие с внешними процессами в Python
  10. Список и кортеж в Python
  11. Однострочники Python
  12. Работа с WindowsPath()
  13. Структура данных deque в Python
  14. Замена текста в Python
  15. Преобразование символов с помощью map
  16. Вывод баннеров
  17. Работа с очередями в Python
  18. Обработка исключений в Python
  19. Идентификатор объекта в Python
  20. Метод сравнения объектов в Python
  21. Генераторы в Python
  22. Разрешение имен в Python
  23. Работа с кортежами в Python
  24. Выход из профиля в Django
  25. Удаление falsy-значений из списка с помощью filter
  26. Поиск подстроки в строке
  27. Работа с URL-адресами в Python
  28. Работа с IP-адресами в Python
  29. Метод join() для объединения элементов строки
  30. SciPy: широкий функционал для математических операций
  31. Работа со строками в Python.
  32. Основы работы с базами данных в Python
  33. Подсчет вхождений элементов
  34. Функция reversed() в Python
  35. Оператор == в Python
  36. Переворот списка в Python
  37. Профилирование кода
  38. Проверка ввода с помощью isdigit
  39. PUT запрос для обновления данных
  40. Метод __imod__ для Python
  41. Метод ifloordiv для пользовательских классов
  42. Метод __ixor__ для побитового исключающего ИЛИ
  43. Метод append() для списка
  44. Генерация фальшивых данных с Faker
  45. Разность множеств
  46. Установка User-Agent в Python
  47. Переменные класса и экземпляра
  48. Метод ne для сравнения объектов

Marketello читают маркетологи из крутых компаний