#python-3.10
#python-3.10
Вопрос:
В python 3.10 мы видим недавно встроенную функцию aiter(async_iterable). В документах python. определение таково: «Возвращать асинхронный итератор для асинхронной итерации». Но я не могу понять, как использовать или не использовать определение с примером в google/ youtube. Кто-нибудь знает, как использовать эту встроенную функцию?
Ответ №1:
aiter()
и anext()
вызовите объект __aiter__()
«и __anext__()
«, если он есть. По сути, они являются асинхронным эквивалентом iter()
и. next()
В большинстве случаев вместо этого вы захотите просто использовать an async for
. Однако, чтобы понять, что aiter()
и anext()
как делается, соутины using_async_for()
и using_aiter_anext()
в следующем примере примерно эквивалентны:
from asyncio import sleep, run class Foo: def __aiter__(self): self.i = 0 return self async def __anext__(self): await sleep(1) self.i = 1 return self.i async def using_async_for(): async for bar in Foo(): print(bar) if bar gt;= 10: break async def using_aiter_anext(): ai = aiter(Foo()) try: while True: bar = await anext(ai) print(bar) if bar gt;= 10: break except StopAsyncIteration: return async def main(): print("Using async for:") await using_async_for() print("Using aiter/anext") await using_aiter_anext() if __name__ == '__main__': run(main())