1. 程式人生 > >Python源碼之with原理

Python源碼之with原理

close elf 調用 數據庫 param 最後一行 per etc pen

需求

  我們平時對文件和數據庫操作的時候,執行的步驟都是打開---操作數據---關閉,這是正常的操作順序,但有時候難免會在操作完數據之後忘記關閉文件對象或數據庫,而使用with正是可以解決這個問題。

原理

class MysqlHelper(object):
    def open(self):
        print(open)
        pass

    def close(self):
        print(close)
        pass

    def fetch_all(self):
        pass

    def
__enter__(self): """ 在執行with語句中代碼之前該函數首先被調用 :return: """ self.open() def __exit__(self, exc_type, exc_val, exc_tb): """ 當with語句中最後一行代碼執行完畢之後,自動調用該方法 :param exc_type: :param exc_val: :param exc_tb: :return:
""" self.close() with MysqlHelper() as f: pass

對於要使用with語句的對象,在執行with代碼體之前會首先執行該對象的__enter__方法,然後再執行代碼體,最後自動執行__exit__方法。

Python源碼之with原理