Как указать тип возвращаемого значения в асинхронной функции Python? - PullRequest
0 голосов
/ 30 января 2019

В 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 типа.Но почему?И какими они должны быть в этом случае?

Это также указано в документах , но я до сих пор не понимаю

1 Ответ

0 голосов
/ 30 января 2019

Пример в документах показывает, что есть три типа:

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 с большим количеством примеров и чуть более четким определением:

Generator[YieldType, SendType, ReturnType]

В вашем случаеЯ бы предположил [None, None, str], так как вас интересует только ожидаемое значение.

...