No Python, se você abrir um arquivo sem chamar close()
ou fechar o arquivo, mas não usar try
- finally
ou a with
instrução " ", isso é um problema? Ou é suficiente, como prática de codificação, confiar na coleta de lixo do Python para fechar todos os arquivos? Por exemplo, se alguém fizer isso:
for line in open("filename"):
# ... do stuff ...
... isso é um problema porque o arquivo nunca pode ser fechado e pode ocorrer uma exceção que impede que seja fechado? Ou será definitivamente fechado na conclusão da for
declaração porque o arquivo está fora do escopo?
for
blocos e funções / classes / módulos. É muito mais simples que isso: objetos não têm escopos, apenas nomes. Não existe um nome que se refira a esse objeto; portanto, não há nada aqui para permanecer no escopo ou sair do escopo.
for
loop e mencionando que o arquivo é fechado por um motivo completamente diferente. Não entra no escopo do Python, pois não é relevante aqui.
for
bloco. Sua contagem de referência será zero, fazendo com que ela seja fechada automaticamente, mas apenas funções, classes e módulos definem escopos no Python, não outras instruções compostas.