sam*_*tav 4 python conceptual with-statement contextmanager python-2.7
有没有人在python的文件对象实现__enter__
和__exit__
用例之外有一个真实世界的例子?最好是你自己的,因为我想要实现的是一个更好的方法来概念化它将被使用的情况.
我已经读过了.
有很多用途.就在我们的标准库中:
sqlite3
; 使用连接作为上下文管理器转换为提交或中止事务.
unittest
; 使用assertRaises
上下文管理器可以让您声明引发异常,然后测试异常的各个方面.
decimal
; localcontext
管理十进制数精度,舍入和其他方面.
threading
锁,信号量和条件等对象也是上下文管理器 ; 让你获得一组语句的锁定等.
该warnings
模块为您提供了一个临时管理器来临时捕获警告.
Python自己的test.test_support
模块使用多个上下文管理器,检查特定警告,捕获stdout
,忽略特定异常并临时设置环境变量.
每当您想要检测代码块何时开始和/或结束时,您都希望使用上下文管理器.凡在你使用try:
了finally:
一套以保证清理,使用上下文管理器.