1778

9 分钟

#Python 的内置函数 anext

说明:获取异步迭代器的下一数据项。

#函数说明

async def anext(async_iterator): ''' 获取异步迭代器的下一数据项, 没有下一项时产生 StopAsyncIteration 异常 :param async_iterator: 一个异步迭代器 :return: 迭代器的下一项 '''

说明

通过调用对象的 __anext__ 方法,获取异步迭代器的下一数据项。

异步迭代器没有下一项时,应当从 __anext__ 方法中通过抛出 StopAsyncIteration 异常进行通知,anext 函数会将该异常继续抛出。

可以参考同步版本的 next 函数。

参数

  • async_iterator - 一个异步迭代器

返回值

迭代器的下一项数据的 awaitable 对象;如果迭代器没有下一项,则抛出 StopAsyncIteration 异常。


async def anext(async_iterator, default): ''' 获取异步迭代器的下一数据项,没有下一项时返回 default :param async_iterator: 一个异步迭代器 :param default: 默认值 :return: 迭代器的下一项 '''

说明

通过调用对象的 __anext__ 方法,获取异步迭代器的下一数据项。

异步迭代器没有下一项时,应当从 __anext__ 方法中通过抛出 StopAsyncIteration 异常进行通知,anext 函数会返回 default 参数传入的默认值。

可以参考同步版本的 next 函数。

参数

  • async_iterator - 一个异步迭代器
  • default - 迭代器没有下一项时返回的默认值

返回值

迭代器的下一项数据的 awaitable 对象;如果迭代器没有下一项,则返回 default 参数传入的默认值。

#示例

import asyncio # 异步迭代器类 class AsyncIterator: def __init__(self, stop): self.__stop = stop self.__current = 0 async def __anext__(self): if self.__current < self.__stop: await asyncio.sleep(0.1) # 模拟异步操作 self.__current += 1 return self.__current - 1 else: raise StopAsyncIteration # 异步函数 async def main(): # 异步迭代器对象 async_iterator = AsyncIterator(10) # 迭代 while (value := await anext(async_iterator, None)) is not None: print(value) # 启动 asyncio.run(main())

创建于 2025/6/9

更新于 2025/6/9