Python 3.5+astпонятие
ast.Await
async
Узел выражения await: ожидаемый объект в поле value. Чаще всего стоит внутри Expr или справа от присваивания.
Синтаксис
ast.Await(value)
Await — выражение, а не инструкция: строка await g() в теле — это Expr(Await(Call)), и вызов надо доставать через два уровня. ast.parse('await x') на уровне модуля проходит, а ошибку 'await' outside function даёт только compile() (кроме флага PyCF_ALLOW_TOP_LEVEL_AWAIT, на котором работает python -m asyncio).
Примеры
import ast
fn = ast.parse('async def f():\n await g()').body[0]
stmt = fn.body[0]
print(type(stmt).__name__, type(stmt.value).__name__, stmt.value.value.func.id) # → Expr Await g
import ast
tree = ast.parse('await x')
try:
compile(tree, '<src>', 'exec')
except SyntaxError as e:
print(e.msg) # → 'await' outside function
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности