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