上下文管理器可以在 Python 中多次运行包含的块吗?

Cas*_*ash 2 python contextmanager

作为一个基本示例,请想象以下内容:

with runFiveTimes:
    print("test")
Run Code Online (Sandbox Code Playgroud)

这在Python中可能吗?

(这个例子只是为了澄清问题,显然有更简单的方法来实现这个特定的例子)

wp-*_*com 6

这是不可能的。我尝试向上下文管理器添加多个yield 语句,但Python 对此很不满意。这个答案更多地解决了这个问题,并解释了一些好的替代方案。

这家伙检查了生成的字节码,发现这是不可能的。(本指南解释了每个字节码的含义。)

这个表明上下文管理器存储在堆上,这是类所在的位置,而不是对象的位置。