python关键字"with“是用来做什么的?
示例来自:http://docs.python.org/tutorial/inputoutput.html
>>> with open('/tmp/workfile', 'r') as f:
... read_data = f.read()
>>> f.closed
True
发布于 2009-09-02 19:05:11
在python中,在处理非托管资源(如文件流)时使用with
关键字。它类似于VB.NET和C#中的using
语句。它允许您确保在使用资源的代码完成运行时“清理”该资源,即使抛出异常也是如此。它为try/finally
块提供了“语法糖”。
with
语句澄清了以前使用try...finally
块来确保执行清理代码的代码。在本节中,我将讨论该语句,因为它将经常使用。在下一节中,我将研究实现细节,并展示如何编写与此语句一起使用的对象。
with
语句是一个控制流结构,其基本结构为:
将表达式作为变量: with-block
表达式被求值,并且它应该产生一个支持上下文管理协议的对象(即,具有__enter__()
和__exit__()
方法)。
根据Scott Wisniewski的评论更新修复了VB标注。我确实把with
和using
搞混了。
发布于 2012-08-03 02:33:32
Explanation from the Preshing on Programming blog
当你有两个相关的操作,你想成对执行,中间有一段代码时,它很方便。经典的例子是打开一个文件,操作文件,然后关闭它:
with open('output.txt','w') as f: f.write('Hi f.write!‘)
上面的with语句将自动关闭嵌套代码块之后的文件。(继续阅读以了解关闭是如何发生的。)使用with语句的优点是,无论嵌套块如何退出,都可以保证关闭文件。如果在块结束之前发生异常,它将在异常被外部异常处理程序捕获之前关闭文件。如果嵌套块包含return语句、continue或break语句,则with语句在这些情况下也会自动关闭文件。
https://stackoverflow.com/questions/1369526
复制相似问题