如何在异步Python函数中指定返回类型?

时间:2019-01-30 08:29:40

标签: python types python-asyncio mypy

在TypeScript中,您会做类似的事情

async function getString(word: string): Promise<string> {
   return word;
}

如何在Python中做同样的事情?我尝试了以下方法:

async def get_string(word: str) -> Coroutine[str]:
    return word

并获得此追溯:

TypeError: Too few parameters for typing.Coroutine; actual 1, expected 3

所以Coroutine需要3种类型。但为什么?在这种情况下应该是什么?

这在the docs中也有规定,但我还是不明白

1 个答案:

答案 0 :(得分:2)

示例in the docs显示了三种类型:

from typing import List, Coroutine
c = None # type: Coroutine[List[str], str, int]
...
x = c.send('hi') # type: List[str]
async def bar() -> None:
    x = await c # type: int
  1. 如果发送值,您将得到什么;
  2. 您可以发送多少价值;和
  3. 您将得到什么,您已经等待了它。

它还链接到Generator definition并提供了更多示例和更清晰的定义:

Generator[YieldType, SendType, ReturnType]

在您的情况下,我猜为[None, None, str],因为您只关心等待的值。