3.4.3. 异步迭代器
异步迭代器 可以在其 __anext__
方法中调用异步代码。
异步迭代器可在 async for
语句中使用。
object.__aiter__
(self)
必须返回一个 异步迭代器 对象。
object.__anext__
(self)
必须返回一个 可迭代对象 输出迭代器的下一结果值。 当迭代结束时应该引发 StopAsyncIteration
错误。
异步可迭代对象的一个示例:
class Reader:
async def readline(self):
...
def __aiter__(self):
return self
async def __anext__(self):
val = await self.readline()
if val == b'':
raise StopAsyncIteration
return val
3.5 新版功能.
在 3.7 版更改: 在 Python 3.7 之前,__aiter__
可以返回一个 可迭代对象 并解析为 异步迭代器。
从 Python 3.7 开始,__aiter__
必须 返回一个异步迭代器对象。 返回任何其他对象都将导致 TypeError
错误。