Функция аннотации с двумя или более возвращаемыми параметрами - PullRequest
16 голосов
/ 07 мая 2019

Когда я пишу аннотацию для функции, которая возвращает один параметр, у меня нет проблем.

def func() -> str:
    return "ok"

Однако, когда я пишу аннотацию с двумя или более параметрами, мой PyCharm дает мне SyntaxError: invalid syntax.

def func() -> str, str:
    return "ok - 1", "ok - 2"

Я думаю, что параметры можно комбинировать с tuple, но я не думаю, что это лучший способ сделать это.

У меня такой вопрос: как правильно аннотировать функцию с двумя или более возвращаемыми параметрами?

Пожалуйста, включите ссылку PEP, если таковая имеется, в ваш ответ. Я искал ответ в PEP 484 и PEP 3107 и не смог его найти.

1 Ответ

24 голосов
/ 07 мая 2019

Использование typing.Tuple:

from typing import Tuple

def func() -> Tuple[str, str]:
    return 'a', 'b'

Это уместно, потому что концептуально вы на самом деле возвращаете один tuple, содержащий эти значения. Примечание:

print(type(func()))

Выход:

<class 'tuple'>

За исключением пустых tuple (()), круглые скобки не необходимы для определения tuple, что означает, что 'a', 'b' создается как tuple, а не отдельные значения, собранные в одно выражение return.

...