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语句也会自动关闭文件。