Syntaxe
with expression as alias:
|
Paramètres
Nom |
Description |
expression |
Ce paramètre permet d'indiquer une expression à utiliser. |
alias |
Ce paramètre permet d'indiquer l'alias à utiliser comme remplacement. |
Description
Ce mot réservé permet d'exécuter un bloc avec un contexte spécifié.
Remarques
- Le mot clef with permet de gérer automatiquement les ressources : Il est principalement utilisé pour les objets nécessitant une ouverture et une
fermeture explicite, comme les fichiers. Cela garantit que la ressource est proprement libérée même en cas d'erreur pendant l'exécution du bloc.
- L'utilisation de with rend le code plus lisible et plus sûr : Elle remplace les constructions try/finally courantes pour libérer des ressources.
Cela permet de réduire les erreurs liées à l'oubli de fermer une ressource.
- Le mot with repose sur le protocole de contexte : L'objet utilisé dans with doit implémenter les méthodes spéciales __enter__() et __exit__().
Ces méthodes définissent ce qu'il faut faire au début et à la fin du bloc with.
- L'instruction with peut utiliser un alias grâce au mot-clé as : Cet alias est une variable qui représente l'objet retourné par __enter__().
Cela permet d'interagir avec l'objet tout au long du bloc de manière pratique.
- Le bloc associé à with est exécuté dans un contexte sécurisé : Si une exception est levée pendant le traitement, la méthode __exit__() s'en occupe
automatiquement. Cela permet une gestion des erreurs centralisée et cohérente.
- On peut chaîner plusieurs expressions dans une même instruction with : Python permet d'utiliser la syntaxe : with open(f1) as a,
open(f2) as b: pour travailler avec plusieurs ressources. Cela simplifie l'ouverture simultanée de plusieurs objets.
- Le mot clef with est souvent utilisé avec des fichiers, des sockets ou des connexions à des bases de données : Il assure une bonne gestion de ces
ressources même dans les programmes complexes. Cela réduit les risques de fuites ou de blocages système.
- L'utilisation de with est aussi courante dans les bibliothèques tierces : Par exemple, les bibliothèques comme threading.Lock ou
contextlib fournissent des objets contextuels compatibles avec with. Cela favorise une écriture plus expressive et idiomatique du code Python.
Dernière mise à jour : Mercredi, le 16 mai 2018