En Python, si vous ouvrez un fichier sans appeler close()
, ou fermez le fichier sans utiliser try
- finally
ou l' with
instruction " ", est-ce un problème? Ou est-il suffisant, en tant que pratique de codage, de s'appuyer sur le garbage collection Python pour fermer tous les fichiers? Par exemple, si on fait ça:
for line in open("filename"):
# ... do stuff ...
... est-ce un problème parce que le fichier ne peut jamais être fermé et qu'une exception pourrait se produire et empêcher sa fermeture? Ou sera-t-il définitivement fermé à la fin de la for
déclaration parce que le dossier sort du cadre?
for
blocs et les fonctions / classes / modules. C'est beaucoup plus simple que cela: les objets n'ont pas de portées, seuls les noms en ont. Il n'y a pas de nom qui fait référence à cet objet, donc il n'y a rien ici pour rester dans la portée ou sortir de la portée.
for
boucle et mentionne que le fichier est fermé pour une raison entièrement différente. Cela n'entre pas dans les portées en Python, car ce n'est pas pertinent ici.
for
bloc. Son nombre de références ira à zéro, ce qui le fermera automatiquement, mais seules les fonctions, classes et modules définissent des portées en Python, pas d'autres instructions composées.