Встречается на собеседованиях • сегодня
Что такое контекстный менеджер в Python
Контекстный менеджер в Python — это объект, который управляет ресурсами, обеспечивая корректное выполнение кода при входе и выходе из контекста с помощью методов enter и exit.
Пример 1:
text
import time
class Timer:
def __enter__(self):
self.start = time.time()
print("Таймер запущен")
return self
def __exit__(self, exc_type, exc_value, traceback):
end = time.time()
print(f"Время выполнения: {end - self.start:.2f} сек")
Вызов
with Timer():
time.sleep(1)
print("Прошла 1 секунда")
#Вывод
Таймер запущен
Прошла 1 секунда
Время выполнения: 1.00 сек
text
_Пример 2: Кастомный контекстный менеджер (или наглядно что под коптом):_
class FileManager:
def enter(self):
print("Открыли файл")
return self
def exit(self, exc_type, exc_value, tb):
print(" Закрыли файл")
return False # Не подавлять исключения
Вызов
try:
with FileManager():
print("Читаем данные...")
raise ValueError("Ошибка чтения")
except ValueError as e:
print(f"Ошибка: {e}")
finally:
print("Готово")
text
**Как это работает:**
**enter -** Выполняется при входе в **with** (подключение)
**try -** Основной код, может вызвать ошибку
**exit -** Всегда вызывается при выходе из **with**, даже при ошибке
**except -** Ловит исключение, если **exit** его не подавил
**finally -** Выполняется в любом случае - чистка, логирование и т.д.
**exit - гарантирует**, что ресурс (например, соединение) будет закрыт, **даже если в try произойдёт ошибка**.как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
