Python Language N'attendez pas que le ramasse-miettes nettoie


Exemple

Le fait que le ramasse-miettes se nettoie ne signifie pas que vous devez attendre le nettoyage du cycle de nettoyage.

En particulier, vous ne devez pas attendre le nettoyage de la mémoire pour fermer les descripteurs de fichiers, les connexions à la base de données et les connexions réseau ouvertes.

par exemple:

Dans le code suivant, vous supposez que le fichier sera fermé lors du prochain cycle de récupération de la mémoire, si f était la dernière référence au fichier.

>>> f = open("test.txt")
>>> del f

Un moyen plus explicite de nettoyer est d'appeler f.close() . Vous pouvez le faire encore plus élégant, en utilisant l'instruction with , également appelée gestionnaire de contexte :

>>> with open("test.txt") as f:
...     pass
...     # do something with f
>>> #now the f object still exists, but it is closed

L'instruction with vous permet d'indenter votre code sous le fichier ouvert. Cela rend explicite et plus facile de voir combien de temps un fichier reste ouvert. Il ferme également toujours un fichier, même si une exception est déclenchée dans le bloc while .