Back to questions
Junior — Middle
61
Чем отличается использование контекстного менеджера от блока try/finally при обработке ресурсов в Python?
Answer from AI
sobes.tech AI
Контекстный менеджер в Python (используемый через конструкцию with) автоматически управляет ресурсами: он гарантирует, что методы enter и exit будут вызваны, что позволяет корректно открыть и закрыть ресурс даже при возникновении исключений.
Блок try/finally тоже позволяет освободить ресурсы, но требует явного вызова методов освобождения в finally, что увеличивает вероятность ошибки или пропуска.
Пример с контекстным менеджером:
with open('file.txt', 'r') as f:
data = f.read()
Эквивалент с try/finally:
f = open('file.txt', 'r')
try:
data = f.read()
finally:
f.close()
Контекстный менеджер делает код чище, безопаснее и удобнее для работы с ресурсами.