Я наткнулся на код, который выполняет итерацию по строкам в файле, например:
for line in open(filename, 'r'):
do_all_the_things()
Это более питоническая версия чего-то вроде:
with open(filename, 'r') as f:
for line in f:
do_all_the_things()
Он использует меньше уровней отступов, поэтому выглядит лучше, но это то же самое? Насколько я знаю, with
в основном добавляет finally: f.close()
или что-то в этом роде, чтобы гарантировать, что после выхода из блока объект будет очищен. Когда первый for
цикл заканчивается (или, возможно, прерывается с break
) и переменная выходит за пределы области видимости, происходит ли то же самое? Могу ли я взять подсказку из первого бита кода и сэкономить несколько нажатий клавиш, или, скорее, следует ли мне это исправить?