все Python 3astпонятие
ast.With
управление потоком
Узел инструкции with: items — список withitem (выражение и необязательная цель as), body — тело.
Синтаксис
ast.With(items, body, type_comment=None)
Несколько менеджеров в одной строке — один With с несколькими items, а не вложенные узлы; при этом вложенный with — отдельный With в body, и дерево двух записей различается. Цель as хранится в optional_vars и равна None, если её нет. Асинхронный async with — другой узел, AsyncWith. До Python 3.3 полей было иначе (context_expr прямо в With).
Примеры
import ast
w = ast.parse('with open(p) as f, lock:\n pass').body[0]
print(type(w).__name__, len(w.items)) # → With 2
print(w.items[0].optional_vars.id, w.items[1].optional_vars) # → f None
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности