Курс 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"
- Проверка типа объекта в Python
- Слияние словарей в Python 3.9
- Асинхронное программирование с asyncio
- Лямбда-функции в Python
- EMOT преобразование эмодзи в текст
- Работа с PosixPath() в Python
- Управление пакетами с pip
- Функция zip() — объединение последовательностей
- Получение локальных переменных в Python
- Ускоренный импорт библиотек
- Приближение чисел в Python
- Вычисление фазы комплексного числа
- Работа с CSV файлами
- Проверка элемента в множестве.
- Установка максимального количества цифр
- Работа с асинхронными задачами в Python
- Ветвление выражения в Python
- Преобразование строк в числа с плавающей запятой
- Получение пути к текущему скрипту с помощью os
- Разделение функций на этапы
- Расчет времени выполнения программы
- Генератор списка с условием if
- Метод join() для объединения строк
- Работа с классами данных
- Множественное присваивание в Python
- Округление чисел с помощью round
- Логирование в Python
- Вывод сложных структур данных с помощью pprint
- Создание словарей в Python
- Многострочные строки в Python
- Сравнение def и lambda в Python
- Структурирование данных с Pydantic
- Логические значения в Python
- Склеивание строк без циклов
- Изменение элемента списка
- Преобразование объекта в строку
- Измерение времени выполнения кода
- Функции в одну строку
- Работа со слайсами
- Операции с массивами в NumPy
- Именованные срезы в Python
- Docstring в Python
- Списковые включения в Python
- Создание вложенных циклов for
- Метод join() с набором
- Принципы SRP и OCP















