Python打字与未来

Python打字与未来,python,future,python-asyncio,typing,concurrent.futures,Python,Future,Python Asyncio,Typing,Concurrent.futures,我很高兴使用Python3中的模块。另外,我很高兴使用而不是twisted,tornado和替代品 我的问题是如何正确地定义协同程序的结果 我们是不是该说这只是一次合作?例1: async def request() -> asyncio.Future: pass 或者我们应该将协程结果的类型定义为返回值的类型吗?例2: async def request() -> int: pass 如果是的话,那么如何用普通函数,哪些返回期货?例3: def request(

我很高兴使用Python3中的模块。另外,我很高兴使用而不是
twisted
tornado
和替代品

我的问题是如何正确地定义协同程序的结果

我们是不是该说这只是一次合作?例1:

async def request() -> asyncio.Future:
    pass
或者我们应该将协程结果的类型定义为返回值的类型吗?例2:

async def request() -> int:
    pass
如果是的话,那么如何用普通函数,哪些返回期货?例3:

def request() -> asyncio.Future:
    f = asyncio.Future()
    # Do something with the future
    return f

这条路对吗?那么我们如何判断未来的结果呢?

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

一般来说,您应该定期返回值(例如
int
float
bool
None
等等),但如果您将其用作可调用项,则应该如下所示:

async def bar(x: int) -> str:
    return str(x)

cbar: Callable[[int], Awaitable[str]] = bar
有关详细信息:


您也可以查看这一点以获得
mypy
支持。

使用通用版本,例如,谢谢,这是一种完美的函数类型,是的,这是正确的。但问题只是关于函数的返回类型。无论如何,谢谢你