With/as语句的设计是为了和支持环境管理器协议的环境管理器对象一起工作。在python2.5中,with/as语句是默认不使用的。当然也可以选择使用,这时需要import命令来激活:
from _future_ import with_statement
和其他语言一样,在python中也有异常处理机制,try/finally就是和异常处理相关的语句。Try/finally语句的大致运行规则是:如果try代码块运行时没有发生异常,在执行完整个try代码块中的内容后,python会跳至执行finally代码块;如果try代码块运行时有异常发生,python会捕捉这个异常,并终止try语句块接下来的内容的执行,但是依然会运行finally代码块,这个异常会被向上传递到较高的try语句或顶层默认处理器。
With/as语句的设计作为try/finally语法模式的的代替方案。与try/finally语句相同的是,with/as语句也是用于定义必须执行的终止或“清理”行为,无论处理步骤中是否发生异常。进步性在于,与try/finally相比,with语句支持更丰富的基于对象的环境管理协议,可以为代码块定义支持进入和离开动作(环境管理协议属于高级的python话题)。
With语句的基本格式如下:
with expression [as varible]:
with-block
这里的expression要返回一个对象,从而支持环境管理协议。如果选用的as子语句存在,此对象会返回一个值,赋值给变量variable