Курс 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"
- Команда %dhist — список посещенных каталогов
- Создание тестовых данных с Faker
- Основные методы NumPy
- Сохранение и загрузка модели в PyTorch
- Удаление элементов из списка
- Проверка переменных окружения в Python
- Вызов функций по строке в Python.
- Подсчет элементов в Python
- Справка по импортированным модулям
- Метод join() для объединения строк
- Закрытие файла в Python
- Удаление URL-адресов в Python
- Списки: объединение, изменение
- Проверка однородности элементов списка
- Работа с массивами в Numpy
- Создание функций высшего порядка
- Преобразование многоуровневого словаря
- Тайное преобразование типа ключа
- Генераторы в Python
- Работа с URL-адресами в Python
- ChainMap.new_child() — добавление нового словаря
- Работа со словарями Python
- Транспонирование 2D-массива с помощью zip
- Метод enumerate() в Python
- Пропуск начальных строк с помощью dropwhile()
- Просмотр внешнего файла в Python
- Декораторы с аргументами
- Выборка чисел
- Генератор бросков кубиков
- Изменение переменной в Python: nonlocal
- Оптимизация гиперпараметров с Scikit Optimize
- Моржовый оператор в Python 3.8
- Лимиты на ресурсы Python
- List Comprehension Tutorial
- Условные выражения в Python
- Проблемы с dict в Python
- Работа с itertools
- EMOT преобразование эмодзи в текст
- Обход дочерних элементов BeautifulSoup
- Работа с утверждениями в Python
- Генераторы в Python
- Преобразование в float
- Библиотека wikipedia для Python
- Форматирование строк в Python
- Оператор Walrus: правильное использование
- Изменение логики работы с временем
- Создание циклической ссылки















