Python中with - as用法
        
        
            最常见到的用到with as的地方,比如打开文件的时候:
| 1 | with open("1.txt") as file: | 
为什么要用with as,可以理解为是简化版的 try except语句,可以处理异常。
为什么要用with as
比如,上面的代码,不用with as 写法,一般这样写:
| 1 | file = open("1.txt") | 
这样就会有个问题:当”1.txt”文件不存在的时候,就会报异常,就需要处理异常,或者先判断文件是否存在。你就可能需要这样写:
| 1 | try: | 
而用with as就不需要这么麻烦了,能自动处理异常。
with as语句结构如下:
| 1 | with expression as [variable]: | 
with 工作原理
with所求值的对象必须有一个enter()方法,一个exit()方法。
- 1.紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量;
- 2.当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。所以也不用close()了。
比如下面的代码:
| 1 | class Sample: | 
代码输出结果如下:
| 1 | In __enter__() | 
代码执行过程:
- 1.with as语句中sample=get_sample(),调用get_sample()方法;
- 2.返回一个Sample()对象;
- 3.调用Sample()对象的__enter__()方法,输出In __enter__(),并return “Foo”;
- 4.执行with下面代码块的语句,print("sample:", sample);
- 5.with执行完后,调用Sample()对象的__exit__()方法,输出In __exit__()。
exit()方法中有3个参数:exc_type,exc_value,exc_trace,是在异常处理中用的。
exc_type:错误的类型exc_value:错误类型对应的值exc_trace:代码中错误发生的位置
可以在exit()方法中print打印出来。
- 本文标题:Python中with - as用法
- 本文作者:HDUZN
- 创建时间:2022-05-20 21:55:14
- 本文链接:http://hduzn.cn/2022/05/20/Python中with-as用法/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
         评论