Функция аннотации с двумя или более возвращаемыми параметрами

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

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

Используйте 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.