Python 上下文管理器 with
__enter__/__exit__/contextlib · 难度:入门 · +20XP
Python 上下文管理器 with —— 自动管理资源
打开文件后要关闭,获取锁后要释放,连接数据库后要断开——这些成对操作容易忘记后半部分。with语句保证无论是否发生异常,资源都会被正确释放。
基本用法
with open('data.txt', 'r') as f:
content = f.read()
# f自动关闭
class Timer:
def __enter__(self):
self.start = time.time(); return self
def __exit__(self, *args):
print(f'耗时:{time.time()-self.start:.2f}s')
动手练习
- 基础练习:用with open读取一个文件的内容并打印。
- 进阶应用:自己实现一个数据库连接上下文管理器。
- 项目实战:把项目中手动try/finally的资源管理改为with语句。
学习提示:每学完一个知识点,建议在Python交互环境中动手验证。编程不是看会的,是写会的。打开你的终端输入python开始练习吧!遇到问题善用官方文档 docs.python.org。坚持每天写代码,三个月后你会看到巨大的进步。