[Python]_[初级]_[关于with语句的使用方法]

场景

1.在很多项目代码里, 经常会遇到语句with的使用, 这个with到底如何使用的呢, 它又会用在哪方面呢?

2.with语句是python里特殊的语句, 在Java,Object-C,C++里是没有的, 它是否是关键的语句, 没有这个语句是不是很多场景就没有替代方案了?

说明

0.with语句并不是必须的语句, 它的替代方案就是try/finally语句. 只不过with语句需要的对象比较特殊, 需要自带__enter__exit__实现,和C++的构造和析构函数很像, 在对象生命周期开始和结束时自动分别调用构造和析构函数. 它只是一个具备执行流程顺序的封装语句而已, 只是在资源创建销毁时使用, 起到精简代码的作用.

1.语法

with_stmt ::=  "with" with_item ("," with_item)* ":" suite
with_item ::=  expression ["as" target]

或者

with EXPR as VAR:
    BLOCK

python解析器在内部大概会解析为:

mgr = (EXPR)
exit = type(mgr).__exit__  # Not calling it yet
value = type(mgr).__enter__(mgr)
exc = True
try:
    try:
        VAR = value  # Only if "as VAR" is present
        BLOCK
    except:
        # The exceptional case is handled here
        exc = False
        if no

你可能感兴趣的:(语言特性,Python-完全自动化)