隐藏页面特效

contextmanager装饰器

虽然上下文管理器很好用,但定义一个符合协议的管理器对象其实挺麻烦的
得首先创建一个类,然后实现好几个魔法方法。为了简化这部分工作,python
提供了一个非常好用的工具:@contextmanager装饰器
@contextmanager位于内置模块contextlib下,它可以把任何一个生成器函数
直接转换为一个上下文管理器
举个例子,实现一个自动关闭连接的数据库上下文管理器

from contextlib import contextmanager @contextmanager def create_conn_obj(host, port, timeout=None): conn = create_conn(host, port, timeout=timeout) try: yield conn # 1 finally: # 2 conn.close()

1.以yield关键字为界,yield前的逻辑会在进入管理器时执行(类似于__enter__)。yield后的逻辑会在退出管理器时执行(类似于__exit__)
2.如果要在上下文管理器内处理异常,必须用try语句块包裹yield语句


__EOF__

本文作者404 Not Found
本文链接https://www.cnblogs.com/weiweivip666/p/16687025.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
posted @   我在路上回头看  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2021-09-12 rpm的一些命令
2021-09-12 yum源配置脚本
点击右上角即可分享
微信分享提示