Оператор async for

Оновлено: 24.04.2023

async_for_stmt ::=  "async" for_stmt

asynchronous iterable надає метод __aiter__, який безпосередньо повертає asynchronous iterator, який може викликати асинхронний код у своєму методі __anext__.

Оператор async for дозволяє зручно виконувати ітерації над асинхронними ітераціями.

Наступний код:

async for TARGET in ITER:
    SUITE
else:
    SUITE2

Семантично еквівалентний:

iter = (ITER)
iter = type(iter).__aiter__(iter)
running = True

while running:
    try:
        TARGET = await type(iter).__anext__(iter)
    except StopAsyncIteration:
        running = False
    else:
        SUITE
else:
    SUITE2

See also __aiter__() and __anext__() for details.

Це SyntaxError, якщо використовувати оператор async for поза тілом функції співпрограми.