通过函数定义装饰器的更短方法?

问题描述 投票:0回答:1

使用

@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(...)

这在技术上可行吗?

python contextmanager
1个回答
0
投票

上下文提供目标和错误处理。您的示例未处理这些功能。 因此,虽然可以设计一种可以运行此类示例的语言,但其上下文的功能集将会减少。

© www.soinside.com 2019 - 2024. All rights reserved.