asyncio.iscoroutinefunction函数对于异步发电机,返回False

2024-06-16 13:11:44 发布

您现在位置:Python中文网/ 问答频道 /正文

以下异步发电机代码直接取自PEP525:

async def gen():
    await asyncio.sleep(0.1)
    v = yield 42
    print(v)
    await asyncio.sleep(0.2)

但是,当我调用时(使用python3.6):

print(asyncio.iscoroutinefunction(gen), asyncio.iscoroutine(gen))

我得到:

False, False

为什么异步生成器不能识别为一个协程函数?你知道吗

有没有其他方法可以将它标识为一个协程函数?你知道吗


Tags: 函数代码asynciofalseasyncdefsleepawait
1条回答
网友
1楼 · 发布于 2024-06-16 13:11:44

您想使用^{}(和^{}作为调用gen()的结果):

>>> import inspect
>>> print(inspect.isasyncgenfunction(gen), inspect.isasyncgen(gen()))
True True

异步函数和异步生成器函数之间没有类型层次关系。你知道吗

另外,asyncio.iscoroutine*()函数存在的唯一原因是支持不能用于创建异步生成器的legacy generator-based ^{} decorator。如果您不需要支持可能仍然使用这些代码基的旧代码基(早于python3.5),那么我只需要使用inspect.is*()函数。你知道吗

相关问题 更多 >