我的问题如下:
list = [1,2,3] #unknown length
with (item for item in list):
...
我知道python 3.10支持在上下文管理器中使用元组,但我无法使用该版本。
如果您有一个任意的上下文管理器列表,您可以使用ExitStack
动态地输入每一个。
from contextlib import ExitStack
cm_list = [...]
with ExitStack() as es:
for cm in cm_list:
es.enter_context(cm)
...
第一个进入的上下文管理器将是最后一个退出的,最后一个进入的将是第一个退出的,这与ExitStack
实际上是一个上下文管理器堆栈的想法是一致的。