在Python中使用'with .. as'语句的优点是什么?
-
02-10-2019 - |
题
with open("hello.txt", "wb") as f: f.write("Hello Python!\n")
似乎和
f = open("hello.txt", "wb")
f.write("Hello Python!\n")
f.close()
使用打开的好处是什么优点..而不是f =?它只是句法糖吗?只是保存一行代码?
解决方案
为了等同于 with
语句版本,您编写的代码应该看起来像这样:
f = open("hello.txt", "wb")
try:
f.write("Hello Python!\n")
finally:
f.close()
虽然这看起来像是句法糖,但它可以确保您释放资源。通常,世界比这些人为的例子更为复杂,如果您忘记了 try.. except...
或者无法处理极端情况,您的手上有资源泄漏。
这 with
声明使您免于这些泄漏,从而更容易编写干净的代码。有关完整的解释,请看 PEP 343, ,它有很多例子。
其他提示
如果 f.write
引发例外, f.close()
当您使用时称为 with
并且在第二种情况下没有打电话。还 f
使用较小的范围,使用时代码更干净 with.
前者仍然关闭 f
如果在 f.write()
.
不隶属于 StackOverflow