Python 类型和 future

obl*_*lex 6 python future typing python-asyncio concurrent.futures

我很高兴在 Python 3 中使用输入模块。此外,我很高兴使用asyncio代替twisted,tornado和替代方案。

我的问题是如何正确定义协程的结果?

我们应该说它只是一个协程吗?示例1:

async def request() -> asyncio.Future:
    pass
Run Code Online (Sandbox Code Playgroud)

或者我们应该将协程的结果类型定义为返回值类型?示例2:

async def request() -> int:
    pass
Run Code Online (Sandbox Code Playgroud)

如果是,那么如何使用返回 future 的普通函数?示例3:

def request() -> asyncio.Future:
    f = asyncio.Future()
    # Do something with the future
    return f
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?那么我们如何才能知道未来的预期结果是什么?

obl*_*lex 3

正如@jonrsharpe 所说,typing.Awaitable非常适合这项任务。