Quel est l'avantage d'utiliser « avec .. comme » déclaration en Python?
-
02-10-2019 - |
Question
with open("hello.txt", "wb") as f: f.write("Hello Python!\n")
semble être le même que
f = open("hello.txt", "wb")
f.write("Hello Python!\n")
f.close()
Quel est l'avantage d'utiliser ouvert .. comme au lieu de f =? Est-ce juste du sucre syntaxique? sauver une seule ligne de code?
La solution
Pour être équivalent à la version de l'instruction with
, le code que vous avez écrit devrait plutôt regarder comme ceci:
f = open("hello.txt", "wb")
try:
f.write("Hello Python!\n")
finally:
f.close()
Bien que cela puisse sembler sucre syntaxique, il assure que vous libérer des ressources. En général, le monde est plus complexe que ces exemples inventé et si vous oubliez un try.. except...
ou ne parviennent pas à traiter un cas extrême, vous avez des fuites de ressources sur vos mains.
L'instruction with
vous évite de ces fuites, ce qui rend plus facile d'écrire un code propre. Pour une explication complète, consultez PEP 343 , il a beaucoup d'exemples.
Autres conseils
Si f.write
lève une exception, f.close()
est appelée lorsque vous utilisez with
et non appelé dans le second cas. Aussi f
a une portée plus faible et le code est propre lors de l'utilisation with.
Le premier se ferme toujours f
si une exception se produit pendant le f.write()
.