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().

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top