在 Python 3.10 中引入了一个新的内置函数 aiter()
,它用于获取可迭代对象的异步迭代器对象。异步迭代器允许在异步程序中逐步获取数据,适用于异步编程场景。
函数语法
aiter(iterable, sentinel=None)
参数:
iterable
:要获取异步迭代器的可迭代对象。sentinel
(可选):一个标记值,用于表示异步迭代的结束。当可迭代对象返回这个标记值时,异步迭代停止。如果未提供sentinel
,则迭代将一直进行,直到可迭代对象耗尽。
示例代码
基本示例 - 异步迭代一个异步生成器:
import asyncio
async def async_generator():
for i in range(3):
yield i
await asyncio.sleep(1)
async def main():
async for item in aiter(async_generator()):
print(item)
asyncio.run(main())
运行结果:
0
1
2
使用 sentinel 停止异步迭代:
import asyncio
async def async_generator():
for i in range(5):
yield i
await asyncio.sleep(1)
async def main():
async for item in aiter(async_generator(), sentinel=3):
print(item)
asyncio.run(main())
运行结果:
0
1
2
总结
aiter()
函数是 Python 3.10 中引入的新特性,用于获取可迭代对象的异步迭代器对象。它的语法与 iter()
函数类似,但适用于异步编程场景。通过异步迭代器,可以在异步程序中逐步获取数据,非常适合处理异步生成器等情况。可以通过提供 sentinel
参数来控制异步迭代的停止条件。这个新功能使得在异步代码中更加方便地进行数据处理和流控制。