Python Glossary English

Python 3.5+astпонятие

ast.AsyncWith

async

Узел инструкции async with: список контекстных менеджеров items и тело body. Допустим только внутри async def.

Синтаксис

ast.AsyncWith(items, body, type_comment=None)

Каждый менеджер в async with a as x, b — отдельный withitem с полями context_expr и optional_vars, а не кортеж; optional_vars равно None, если as нет. Класс отдельный от With, так что visit_With его пропустит. Как и с async for, ast.parse принимает его вне корутины, а ошибку даёт compile().

Примеры

import ast
fn = ast.parse('async def f():\n    async with lock, open_db() as db:\n        pass').body[0]
node = fn.body[0]
print(type(node).__name__, len(node.items))  # → AsyncWith 2
print(node.items[0].optional_vars, node.items[1].optional_vars.id)  # → None db

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности