Курс Python → Управление ресурсами в Python
Контекстные менеджеры в Python предоставляют удобный способ управления ресурсами, такими как файлы, сокеты или соединения с базой данных. Они позволяют нам гарантировать, что ресурсы будут корректно закрыты после завершения работы с ними, даже в случае возникновения исключения. Для создания контекстного менеджера нам нужно определить класс с методами __enter__ и __exit__, которые будут вызываться при входе и выходе из контекста соответственно.
class FileHandler:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close()
В приведенном выше примере класс FileHandler представляет собой контекстный менеджер для работы с файлами. При использовании оператора «with» экземпляр этого класса будет автоматически открывать файл при входе в контекст и закрывать его при выходе из контекста. Это гарантирует, что ресурсы будут освобождены правильно, даже если в процессе обработки файла возникнет исключение.
Для использования созданного контекстного менеджера достаточно просто обернуть блок кода, который работает с файлом, в оператор «with» и указать созданный экземпляр класса:
with FileHandler('example.txt', 'r') as file:
for line in file:
print(line)
В данном примере мы открываем файл ‘example.txt’ для чтения и выводим его содержимое построчно. После завершения работы с файлом он будет автоматически закрыт благодаря контекстному менеджеру. Таким образом, использование контекстных менеджеров в Python позволяет нам писать более безопасный и чистый код, обеспечивая правильное управление ресурсами.
Другие уроки курса "Python"
- Шаблоны и наследование в Flask
- Запуск внешних программ с subprocess
- Запуск Python из интерпретатора
- Измерение времени выполнения кода с помощью time
- Удаление ключа из словаря
- Функция enumerate() — Python
- Получение имени функции с помощью inspect
- Работа с массивами в Python
- Константы в модуле cmath
- Импорт модулей в Python 3.12
- Работа с очередями в Python
- Обучение модели с указанием эпох
- Декораторы в Python
- Навыки Python: строки, типы данных
- Округление в Python
- Оператор is в Python
- Функции min(), max(), sum()
- Использование функции product
- Python: возвращение нескольких значений
- Работа с путями в Python
- Получение пути к текущему скрипту с помощью os
- Функция __init__ в Python
- Создание и удаление объектов
- Работа с необработанными строками
- Гибкие функции Python
- Операторы Splat и splatty-splat
- Оператор «not» в Python
- Проверка класса объекта
- Основные операции с Numpy
- Декораторы в Python
- Форматирование кода на Python
- Обновление ключей в Python
- Проверка памяти объекта
- Хеши в Python
- Работа с контекстными менеджерами
- Изменение списка срезами
- Работа с утверждениями в Python
- Сравнение def и lambda функций в Python
- Объединение списков с использованием itertools.chain
- Операторы объединения в Python 3.9
- Преобразование range в итератор
- Функции высшего порядка в Python
- Пространство имен в Python
- Проверка элементов списка условием
- Тайное преобразование типа ключа
- Возврат нескольких значений
- Создание задания в Cron















