Python Glossary English

Python 3.5+astпонятие

ast.AsyncFor

async

Узел цикла async for: те же поля, что у For, — target, iter, body, orelse и type_comment. Допустим только внутри async def.

Синтаксис

ast.AsyncFor(target, iter, body, orelse, type_comment=None)

Отдельный класс, не подкласс For: visit_For его не увидит. ast.parse пропускает async for даже на уровне модуля, а ошибку 'async for' outside async function даёт только compile(). async for в генераторе списка — это не AsyncFor, а comprehension с is_async=1.

Примеры

import ast
fn = ast.parse('async def f():\n    async for row in rows:\n        pass').body[0]
loop = fn.body[0]
print(type(loop).__name__, loop.target.id, isinstance(loop, ast.For))  # → AsyncFor row False
import ast
comp = ast.parse('[x async for x in aiter_()]', mode='eval').body
print(type(comp).__name__, comp.generators[0].is_async)  # → ListComp 1

См. также

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