Gestionnaires de Contexte Imbriqués et Multiples
Glissez pour afficher le menu
Lorsque vous travaillez avec plusieurs ressources en Python – comme ouvrir plusieurs fichiers en même temps – il est souvent nécessaire de s'assurer que chaque ressource est correctement acquise et libérée. C'est là que les gestionnaires de contexte imbriqués et multiples deviennent particulièrement utiles. La vidéo ci-dessus présente deux approches : l'imbrication des instructions with et l'utilisation de plusieurs gestionnaires de contexte sur une seule ligne.
Imbriquer des instructions with signifie placer un bloc with à l'intérieur d'un autre. Cela est utile lorsque l'utilisation d'une ressource dépend d'une autre. Par exemple, vous pouvez lire à partir d'un fichier et écrire dans un autre, en vous assurant que les deux fichiers sont correctement gérés :
with open('input.txt', 'r') as infile:
with open('output.txt', 'w') as outfile:
for line in infile:
outfile.write(line.upper())
Cependant, Python permet également d'ouvrir les deux fichiers dans une seule instruction with, en séparant chaque gestionnaire de contexte par une virgule. Cette approche rend votre code plus lisible et garantit que chaque ressource est libérée dans l'ordre inverse de son acquisition. Cela signifie que la dernière ressource ouverte sera la première à être fermée à la fin du bloc.
# Open two files simultaneously using a single 'with' statement
with open('input.txt', 'r') as infile, open('output.txt', 'w') as outfile:
for line in infile:
outfile.write(line.lower())
# When the block ends, outfile is closed first, then infile
Utiliser plusieurs gestionnaires de contexte sur une seule ligne n'est pas seulement une question de syntaxe – c'est une méthode robuste pour gérer plusieurs ressources à la fois. Cela est particulièrement important lors de la manipulation de fichiers, de connexions réseau ou de verrous qui doivent toujours être correctement libérés afin d'éviter les fuites de ressources ou les interblocages.
Python Context Managers cours
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion