Python - with语句 - 写一个支持with方法调用的类
Python - with语句 - 写一个支持with方法调用的类
前言
使用语句with open('a.txt', 'r') as f:可以自动关闭文件句柄,使用语句with torcu.no_grad()可以不计算梯度。
我学Py的时候咋好像没学过open和no_grad是怎么实现的?
于是今日了解了一下。
实现一个my_with,计算语句执行用时
其实不难,写一个类,写两个函数__enter__(with代码块被调用之前执行)、__exit__(结束时候执行)。然后就可以了。
1 | |
运行结果:
1 | |
那“as”语句呢?
只需要给__enter__函数加个返回值:
1 | |
运行结果:
1 | |
关于__exit__函数的三个参数:
- exc_type:异常的类型,如果
with块中没有异常发生,则为None。 - exc_value:异常的值,即
Exception的实例,如果没有异常发生,则为None。 - traceback:一个
traceback对象,它封装了异常的调用栈信息,如果没有异常发生,则为None。
End
官方文档:https://docs.python.org/3/reference/compound_stmts.html#with
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/138576722
Python - with语句 - 写一个支持with方法调用的类
https://blog.letmefly.xyz/2024/05/08/Other-Python-WithStatement-write1classSupportingWith/