我很高兴在Python 3中使用typing模块。此外,我很高兴使用asyncio代替twisted
,{{1}和替代品。
我的问题是如何正确定义协程的结果?
我们应该告诉它只是一个协程吗?例1:
tornado
或者我们应该将coroutine的结果类型定义为返回值的类型?例2:
async def request() -> asyncio.Future:
pass
如果是,那么如何使用返回期货的普通函数?例3:
async def request() -> int:
pass
这是正确的方法吗?那么我们怎么能分辨出未来的结果呢?
答案 0 :(得分:3)
一般情况下,您应该定期返回值(例如int
,float
,bool
,None
等),但如果您将其用作可调用值应该是这样的:
async def bar(x: int) -> str:
return str(x)
cbar: Callable[[int], Awaitable[str]] = bar
有关详细信息:here。
您也可以查看此issue mypy
支持。
答案 1 :(得分:0)
正如@jonrsharpe所说,typing.Awaitable非常适合这项任务。