• 3.4.3. 异步迭代器

    3.4.3. 异步迭代器

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

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

    • object.aiter(self)
    • 必须返回一个 异步迭代器 对象。

    • object.anext(self)

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

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

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

    3.5 新版功能.

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

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