Ответ 1
Символы с обратной косой чертой
Две или несколько физических линий могут быть объединены в логические линии, используя символы обратной косой черты (
\
)
(ссылаясь на раздел Явная строка, соединяющая)
Если вы хотите поставить менеджеров контекста на разные строки, вы можете сделать эту работу, завершая строки обратными косыми чертами:
with context1 as a,\
context2 as b:
pass
contextlib.ExitStack
contextlib.ExitStack
является
менеджер контекста, который предназначен для упрощения программно объединить других менеджеров контекста и функций очистки, особенно тех, которые которые являются необязательными или иным образом управляются входными данными.
Он доступен в Python 3.3 и новее и позволяет легко вводить переменное количество менеджеров контекста. Для двух менеджеров контекста использование выглядит следующим образом:
from contextlib import ExitStack
with ExitStack() as es:
a = es.enter_context(context1)
b = es.enter_context(context2)
Вложение
Можно разбить контекстное выражение на несколько вложенных операторов with
:
С более чем одним элементом менеджеры контекста обрабатываются так, как будто множественные с операторами были вложены:
with A() as a, B() as b:
набор эквивалентен
with A() as a: with B() as b: suite
(из Инструкция with)