Python源码之with原理
Posted liuyinzhou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python源码之with原理相关的知识,希望对你有一定的参考价值。
需求
我们平时对文件和数据库操作的时候,执行的步骤都是打开---操作数据---关闭,这是正常的操作顺序,但有时候难免会在操作完数据之后忘记关闭文件对象或数据库,而使用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原理的主要内容,如果未能解决你的问题,请参考以下文章
学习(1)相机标定之张正友标定法数学原理详解(含python源码)