async_generator' 对象不可迭代

async_generator' object is not iterable

我需要 return 异步函数中的值。 我尝试使用 return:

的同步形式
import asyncio

async def main():
    for i in range(10):
        return i
        await asyncio.sleep(1)

print(asyncio.run(main()))

输出:

0 [Finished in 204ms]

但它只是第一个循环的 return 值,没有扩展。于是改了代码如下:

import asyncio

async def main():
    for i in range(10):
        yield i
        await asyncio.sleep(1)

for _ in main():
    print(_)

输出:

TypeError: 'async_generator' object is not iterable

通过使用异步生成器,我遇到了这个错误。我怎样才能 return 异步函数的每个循环的值?

谢谢

您需要使用 async for,它本身需要在 async 函数中:

async def get_result():
    async for i in main():
        print(i)

asyncio.run(get_result())