Курс 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. Использование функции enumerate()
  2. Сохранение и загрузка модели в PyTorch
  3. Функция pow() — возвести число в степень
  4. Многострочные комментарии в Python
  5. Метод classmethod
  6. Любовь к Python
  7. Python Метод sleep() времени
  8. Подсчет элементов с помощью Counter из collections
  9. Python Поверхностное Копирование
  10. Импорт в Python: список all
  11. Показ всплывающих окон Tkinter
  12. Упрощение условных выражений с тернарным оператором
  13. Аннотации типов в Python
  14. Запуск асинхронной корутины
  15. Управление контекстом выполнения
  16. Выключение компьютера с помощью Python
  17. Функции с дополнением
  18. Функция format() в Python
  19. Создание и операции с дробями
  20. Метод join для наборов
  21. Использование функции product
  22. Модуль pprint: улучшение вывода данных
  23. Замена подстроки
  24. Подсчет элементов с помощью Counter
  25. Проблема сравнения словарей
  26. Переопределение метода xor в Python
  27. Генераторы в Python
  28. Форматирование строк с % в Python
  29. Оператор in для проверки наличия элемента
  30. Работа с deque из collections
  31. Использование *args
  32. Анонимные функции в Python
  33. Открытие, чтение и закрытие файла
  34. Объединение множеств в Python
  35. Метод repr() в Python
  36. Поиск с помощью регулярных выражений
  37. Копирование и вставка текста в Python
  38. Импорт модулей в Python 3.12
  39. Поиск наиболее частого элемента списке
  40. Удаление ключа из словаря
  41. Символ подчеркивания в Python
  42. Фильтрация элементов с помощью islice
  43. Математические функции в Python
  44. Поиск анаграмм с Counter
  45. Поиск индекса элемента
  46. Объединение коллекций в Python
  47. Поиск самого длинного слова в списке с использованием max()
  48. SciPy: широкий функционал для математических операций

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