0


Python with常见用法以及详解

在面试中被问到:with原理?常见用法是什么?有哪些使用场景?由于事先没有刷面试题,当时那个懵,只回答了常用with来打开文件,事后回想,懊恼不已,由此有了这篇文章,用以记录。

1、with 打开文件

在没用到with时,打开文件(不考虑文件大小)代码如下:

try:

f = open(file, 'r')

f.read()

finnaly:

f.close()

使用with代码:

with open(file, 'r') as f:

f.read() 

如上代码可见,使用with时代码中不用关闭文件了,那文件关闭是怎么完成的呢?其实是__exit__()来完成的。

2、with 上下文管理器

with 后面必须是上下文管理器,上下文管理器我理解就是有__enter__()方法和__exit__()方法的类的实例化对象。

with 上下文管理器 as variable/tuple:

    执行语句

执行顺序如下:

1、with后面代码执行,生成上下文管理器;

2、将__enter__()方法的返回值赋值给as后的变量或者元组(注意:不能是逗号隔开的多个变量);

3、不管执行语句代码是否有异常,都会执行__exit__()方法,例如释放资源等。如果出现异常,则 sys.exc_info()的type、value、traceback会当做参数传给__exit__(),然后程序结束;如果没有异常,则返回None给__exit__()。重点:如果出现异常,但__exit__()返回类似True,那么异常不会被抛出的。

3、常见用法

1、打开文件

2、数据库连接操作,将数据库出现异常的情况放在__exit__()中处理

3、控制线程锁的获取和释放

4、欢迎大家补充

标签: python

本文转载自: https://blog.csdn.net/py_op_dev/article/details/119419136
版权归原作者 py_op_dev 所有, 如有侵权,请联系我们删除。

“Python with常见用法以及详解”的评论:

还没有评论