3.4.3. 异步迭代器

异步迭代器 可以在其 __anext__ 方法中调用异步代码。

异步迭代器可在 async for 语句中使用。

object.__aiter__(self)

必须返回一个 异步迭代器 对象。

object.__anext__(self)

必须返回一个 可迭代对象 输出迭代器的下一结果值。 当迭代结束时应该引发 StopAsyncIteration 错误。

异步可迭代对象的一个示例:

  1. class Reader:
  2. async def readline(self):
  3. ...
  4. def __aiter__(self):
  5. return self
  6. async def __anext__(self):
  7. val = await self.readline()
  8. if val == b'':
  9. raise StopAsyncIteration
  10. return val

3.5 新版功能.

在 3.7 版更改: 在 Python 3.7 之前,__aiter__ 可以返回一个 可迭代对象 并解析为 异步迭代器

从 Python 3.7 开始,__aiter__ 必须 返回一个异步迭代器对象。 返回任何其他对象都将导致 TypeError 错误。