Курс 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. Метод __irshift__ для Python
  2. Разделение строки с помощью re.split()
  3. Извлечение аудио из видео
  4. Установка и использование модуля «howdoi»
  5. Определение имен функций
  6. Beautiful Soup — извлечение данных из HTML
  7. Применение функции map() с лямбда-функциями
  8. Функции с дополнением
  9. Непрерывная проверка в Python
  10. Игра «Угадывание чисел»
  11. Создание словарей с defaultdict
  12. JSON-esque в Python
  13. Переопределение метода __or__()
  14. Управление User-Agent в Python
  15. Извлечение новостей с помощью newspaper3k
  16. Метод matmul для умножения матриц
  17. Получение списка кортежей из словаря
  18. Создание и обучение модели с Keras
  19. Список переменных с %who
  20. Основы Python за 14 дней
  21. Модуль pprint: улучшение вывода данных
  22. Пространство имен в Python
  23. Переопределение метода len
  24. Создание словарей в Python
  25. Пересечение списков с использованием множеств
  26. Ввод нескольких значений
  27. Метод join() для объединения элементов строки
  28. Перезагрузка оператора в Python
  29. JSON в Python: модуль, dump, dumps, load
  30. Проверка памяти объекта
  31. Преобразование чисел в Python
  32. Howdoi — получение ответов из терминала
  33. Хранение данных с помощью dataclasses
  34. Курсы Яндекс Практикум
  35. Преобразование регистра строк
  36. Установка и использование Telegram API в Python
  37. Аннотации типов в Python
  38. Удаление дубликатов с помощью множеств
  39. Конкатенация строк с помощью join()
  40. Присоединение элементов коллекции
  41. Очистка списка от False, None, 0, «»
  42. Использование *args
  43. Отрицательные индексы списков
  44. Объединение словарей в Python

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