我必须执行一个大致如下的代码:
FPGA.send('enter read mode')
FPTA.send('read')
FPGA.send('exit read mode')
我希望确保执行'exit read mode'
行,无论'read'
行中是否存在问题。在Python中实现这一点最优雅的方法是使用上下文管理器。但是,我不想为这个FPGA
对象编写__enter__
和__exit__
方法,因为这只是一个特殊情况。当我阅读本文时,我想以某种方式“硬编码”这种上下文管理器行为。我认为try
{
FPGA.send('enter read mode')
try:
FPGA.send('read')
except Exception as e:
rise e
finally:
FPGA.send('exit read mode')
但我想知道是否有一种更具python风格的方法来实现这一点
contextlib.contextmanager
装饰器为创建上下文管理器对象提供了一个很好的快捷方式,您无需实现__enter__
和__exit__
方法然后您可以像这样使用此上下文管理器:
@contextmanager
函数中的yield
产生对上下文中代码块的控制。当上下文退出时(无论是正常退出还是通过引发的异常退出),将执行finally
块相关问题 更多 >
编程相关推荐