使用
@contextlib.contextmanager()
创建装饰器时,我们必须编写
enter_action(...)
try:
yield ...
finally:
exit_action(...)
这 3 行只是为了(相当不美观)
try/yield/finally
结构。
为什么我们不能得到这样的东西呢?
enter_action(...)
with context_magic(...): # equivalent to try/yield/finally
exit_action(...)
这在技术上可行吗?
上下文提供目标和错误处理。您的示例未处理这些功能。 因此,虽然可以设计一种可以运行此类示例的语言,但其上下文的功能集将会减少。