В Python, если вы открываете файл без вызова close()
или закрываете файл, но не используете try
- finally
или with
оператор " ", это проблема? Или для практики кодирования достаточно полагаться на сборку мусора Python для закрытия всех файлов? Например, если кто-то делает это:
for line in open("filename"):
# ... do stuff ...
... это проблема, потому что файл никогда не может быть закрыт и может возникнуть исключение, которое не позволяет закрыть его? Или он обязательно будет закрыт по завершении for
утверждения, потому что файл выходит из области видимости?
for
блоками и функциями / классами / модулями. Это гораздо проще: объекты не имеют границ, только имена. Нет имени, которое ссылается на этот объект, поэтому здесь нет ничего, что могло бы оставаться в области видимости или выходить из области видимости.
for
циклом связана область видимости , и упоминает, что файл закрывается по совершенно другой причине. Это не касается того, что является областью действия в Python, так как здесь это не актуально.
for
блока. Его счетчик ссылок станет равным нулю, что приведет к его автоматическому закрытию, но только области, классы и модули определяют области в Python, а не другие составные операторы.