骄傲的赛亚人

with上下文管理器

with:是用来启动对象的上下文管理器的,在调用with方法时,系统自动执行下文管理协议,自动调用__enter__和__exit__方法

上下文管理器协议:

__enter__:进入上下文管理器执行的方法

__exit__: 退出上下文管理器执行的方法

代码执行顺序:

在34行调用上下文管理协议时候,首先执行__enter__方法里面的代码,并将返回结果赋值给f,f就是执行__enter__方法返回的值,with中的代码执行完毕之后

最后执行退出方法__exit__方法

 

手动实现上下文管理器

 

 

 

 

 输出:

exc_type的值: <class 'NameError'>

exc_val的值: name 'name' is not defined

exc_tb的值: <traceback object at 0x0000021822BA1BC8>

 

posted on   骄傲的赛亚人  阅读(62)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示