#python #type-hinting
#python #тип-подсказка
Вопрос:
Я добавляю подсказки типа в некоторый код python 2 и столкнулся с небольшой дилеммой. Как можно указать тип возврата функции, когда этот возврат может быть одним из нескольких типов?
Я работаю с функцией, которая выглядит следующим образом…
def foo(param):
# do stuff
return dict_
где param
строка и dict_
словарь с ключами, которые всегда являются строками, и значениями, которые могут быть либо целыми числами, либо строками.
Мое решение состояло в том, чтобы ввести подсказку для функции, как показано ниже, но я хотел проверить, что это правильная стратегия.
def foo(param):
# type: (str) -> Dict[str, object]
# do stuff
return dict_
Ответ №1:
Вам нужно объединение (также называемое типом суммы) Union[str,int]
вместо более общего object
:
def foo(param):
# type: (str) -> Dict[str,Union[str,int]]
# ...
return dict_
Используя object
, вы заявляете, что значения словаря могут быть любого произвольного типа. Union[str,int]
означает, что это может быть an int
; или это может быть a str
; но это не может быть a float
, или a list
, или другое dict
, или что-либо другое, кроме int
or str
.
Комментарии:
1. Я никогда не видел, чтобы однострочные комментарии использовались подобным образом для указания типа.
2. Это рекомендуемый стиль для Python 2, в котором нет аннотаций функций.