有时我发现自己想执行几个顺序命令,例如:
try: foo(a, b) except Exception, e: baz(e) try: bar(c, d) except Exception, e: baz(e) ...
当仅需要忽略异常时,也会发生相同的模式。
这感觉很多余,语法过多,导致在阅读代码时很难遵循。
在C语言中,我可以使用宏轻松解决这种类型的问题,但是不幸的是,这无法在纯Python中完成。
问题:遇到这种模式时,如何最好地减少代码占用空间并提高代码可读性?
如果您使用的是python 2.5或更高版本,则可以使用以下with语句:
with
from __future__ import with_statement import contextlib @contextlib.contextmanager def handler(): try: yield except Exception, e: baz(e)
您的示例现在变为:
with handler(): foo(a, b) with handler(): bar(c, d)