Чтобы быть эквивалентной версии оператора with
, написанный вами код должен выглядеть следующим образом:
f = open("hello.txt", "wb")
try:
f.write("Hello Python!\n")
finally:
f.close()
Хотя это может показаться синтаксическим сахаром, оно обеспечивает высвобождение ресурсов. Как правило, мир сложнее, чем эти придуманные примеры, и если вы забудете try.. except...
или не справитесь с крайним случаем, у вас будут утечки ресурсов.
Оператор with
избавляет вас от этих утечек, облегчая написание чистого кода. Для полного объяснения посмотрите на PEP 343 , у него есть много примеров.