Sobes.tech
Junior — Middle
97

Quelle est la différence entre l'utilisation d'un gestionnaire de contexte et un bloc try/finally lors de la gestion des ressources en Python?

Réponse de l'IA

sobes.tech IA

Контекстный менеджер в 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()

Контекстный менеджер делает код чище, безопаснее и удобнее для работы с ресурсами.