当前位置:   article > 正文

Python with常见用法以及详解_python中with的用法

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、欢迎大家补充

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/183146?site
推荐阅读
相关标签
  

闽ICP备14008679号