python with語句的用法


    今天在看Mentor要求的代碼中碰到了with這一個關鍵詞,不是太理解,便去google了一下,仔細看了一下別人的解釋,基本對with有了一個初步的理解。

    with是python2.5以后才有的,它實質是一個控制流語句,with可以用來簡化try-finally語句。它的主要用法是實現一個類__enter__()和__exit__()方法,基本形式如下:

class controlled_execution:
    def _enter__(self):
        set things up
        return thing
    def __exit__(self, type, value,  traceback):
        tear thing down
with controlled_execution() as thing:
    some code

 

     在實際的運行過程中,python會首先運行enter里的代碼,返回thing,作為as 后面的變量值,然后再運行with模塊中的代碼,最后會自動執行exit中的代碼,而不管with中的代碼運行結果如何。這也就是with能簡化try-finally語句的原因。所以with通常用在讀取文件的操作中,將文件句柄的關閉操作放在exit方法中,這樣就不會因忘記釋放文件句柄而產生可能出現的錯誤。

     另外,exit()方法的返回值可以用來指示with部分的代碼出現的異常是否需要raise,如果返回false,則會raise,否則,不進行任何操作。

 

參考文章

http://effbot.org/zone/python-with-statement.htm

http://hi.baidu.com/feng2211/item/81d325da668a92ed54347f49


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM