Курс 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. Гибкие функции Python
  2. Разделение функций на этапы
  3. Цикл for в Python
  4. Роль ключевого слова self
  5. Метод join() для объединения элементов строки
  6. Декораторы в Python
  7. Тестирование функции сложения
  8. Обмен значений переменных в Python
  9. List Comprehension Tutorial
  10. Мониторинг работы программы Py-spy
  11. Перевод эмодзи и эмотиконов.
  12. Метод splitlines() для разделения строк
  13. Функциональное программирование в Python
  14. Обработка исключений с блоком else
  15. Определение наиболее частого элемента с помощью collections.Counter
  16. Проверка однородности элементов списка
  17. Работа с YAML в Python: PyYAML.
  18. Именованные аргументы в Python
  19. Big O оптимизация
  20. Преобразование многоуровневого словаря
  21. Python reversed() функция
  22. Управление виртуальными окружениями в Python
  23. Удаление дубликатов из списка с помощью dict.fromkeys
  24. Отображение графиков в Jupyter с Matplotlib
  25. Генераторы в Python
  26. Метод bool() в Python
  27. Операторы присваивания в Python
  28. Функции all() и any() в Python
  29. Объединение словарей в Python
  30. Оформление кода по PEP 8
  31. Работа с функцией next() в Python
  32. Работа с timedelta в Python
  33. Вычисление времени выполнения
  34. Оператор in и not in в Python
  35. Работа с контекстными менеджерами
  36. Импорт модулей и пакетов в Python
  37. Определение имен функций
  38. Объединение строк с помощью метода join
  39. Использование функции enumerate()
  40. Преобразование числа в список цифр
  41. Объединение словарей в Python
  42. Генерация случайных чисел в Python
  43. Встраивание HTML в Jupyter Notebook
  44. Однострочники Python
  45. Активация Matplotlib в Jupyter
  46. Итераторы в Python

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