python关键字“with”用于什么?

python关键字“with”用于什么?

示例来自: http : //docs.python.org/tutorial/inputoutput.html

>>> with open('/tmp/workfile', 'r') as f: ... read_data = f.read() >>> f.closed True 

在python中with当使用非托管资源(如文件流)时,使用with关键字。 它类似于VB.NET和C#中的using语句。 它使您可以确保当使用它的代码完成运行时,即使引发异常,资源也会“清除”。 它为try/finally块提供了“语法糖”。

从Python文档 :

with语句澄清了之前将使用try...finally块的代码,以确保执行清理代码。 在本节中,我将讨论这个声明,因为它通常会被使用。 在下一节中,我将研究实现细节,并展示如何编写对象以供此语句使用。

with语句是一个控制流结构,其基本结构是:

 with expression [as variable]: with-block 

表达式被评估,并且应该产生一个支持上下文管理协议的对象(也就是__exit__()__exit__()方法)。

根据Scott Wisniewski的评论更新固定的VB标注。 我真的很困惑与using

来自博客上的Preshing的解释 :

当你有两个相关的操作时,它们是非常方便的。 经典的例子是打开一个文件,操作文件,然后关闭它:

  with open('output.txt', 'w') as f: f.write('Hi there!') 

上面的语句会在嵌套的代码块后自动关闭文件。 (继续阅读,看看究竟是如何发生的。)使用with语句的优点是,无论嵌套块如何退出,都能保证关闭文件。 如果在块结束之前发生异常,它将在异常被外部异常处理程序捕获之前关闭文件。 如果嵌套块包含return语句或continue或break语句,则在这些情况下,with语句也会自动关闭文件。