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