Почему мы используем встроенную функцию aiter() в Python?

#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())