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
615386 次浏览

在python中,with关键字用于处理非托管资源(如文件流)。它类似于VB中的using语句。NET和c#。它允许您确保资源被“清理”;当使用它的代码完成运行时,即使抛出异常。它为try/finally块提供了“语法糖”。

从# EYZ0:

with语句澄清了以前使用try...finally块来确保执行清理代码的代码。

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

with expression [as variable]:
with-block

表达式被求值,结果应该是一个支持上下文管理协议的对象(即具有__enter__()__exit__()方法)。

更新根据Scott Wisniewski的评论修复了VB的callout。我确实把withusing搞混了。

# EYZ0:

当你有两个相关的操作,你想 以一对或更多的方式执行,中间是一个代码块。经典的 例如打开一个文件,然后操作该文件 关闭:< / p >

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

以上的with语句将自动关闭文件后 嵌套的代码块。(继续阅读,看看到底如何关闭 发生。)使用with语句的优点是它是 无论嵌套块如何退出,都保证关闭文件。如果 在块结束之前发生异常,则关闭 由外部异常处理程序捕获异常之前的文件。如果 嵌套的块将包含一个返回语句,或一个继续或 Break语句,with语句将自动关闭文件