Неа. В интерпретаторе ссылок CPython, если циклы ссылок не выполняются (их легче запустить, чем вы думаете, поэтому ничего не предполагайте), первый пример автоматически закроет файл, когда счетчик ссылок уменьшится до 0 сразу после возврата рассматриваемой функции (при условии, что она не сохранила ссылку). Но это не то, на что можно положиться; используйте оператор with
, если хотите получить гарантии на CPython, и даже надежду на правильное поведение альтернативных интерпретаторов с подсчетом без ссылок, таких как PyPy, Jython, Iron Python и др. c. Без with
управления файл, вероятно, в конечном итоге закроется, но нет никаких гарантий относительно того, когда это произойдет (или даже если это лучшее из возможных, а не железная гарантия).