Курс 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. Команда %dhist — список посещенных каталогов
  2. Создание тестовых данных с Faker
  3. Основные методы NumPy
  4. Сохранение и загрузка модели в PyTorch
  5. Удаление элементов из списка
  6. Проверка переменных окружения в Python
  7. Вызов функций по строке в Python.
  8. Подсчет элементов в Python
  9. Справка по импортированным модулям
  10. Метод join() для объединения строк
  11. Закрытие файла в Python
  12. Удаление URL-адресов в Python
  13. Списки: объединение, изменение
  14. Проверка однородности элементов списка
  15. Работа с массивами в Numpy
  16. Создание функций высшего порядка
  17. Преобразование многоуровневого словаря
  18. Тайное преобразование типа ключа
  19. Генераторы в Python
  20. Работа с URL-адресами в Python
  21. ChainMap.new_child() — добавление нового словаря
  22. Работа со словарями Python
  23. Транспонирование 2D-массива с помощью zip
  24. Метод enumerate() в Python
  25. Пропуск начальных строк с помощью dropwhile()
  26. Просмотр внешнего файла в Python
  27. Декораторы с аргументами
  28. Выборка чисел
  29. Генератор бросков кубиков
  30. Изменение переменной в Python: nonlocal
  31. Оптимизация гиперпараметров с Scikit Optimize
  32. Моржовый оператор в Python 3.8
  33. Лимиты на ресурсы Python
  34. List Comprehension Tutorial
  35. Условные выражения в Python
  36. Проблемы с dict в Python
  37. Работа с itertools
  38. EMOT преобразование эмодзи в текст
  39. Обход дочерних элементов BeautifulSoup
  40. Работа с утверждениями в Python
  41. Генераторы в Python
  42. Преобразование в float
  43. Библиотека wikipedia для Python
  44. Форматирование строк в Python
  45. Оператор Walrus: правильное использование
  46. Изменение логики работы с временем
  47. Создание циклической ссылки

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