Если для проверки вашей программы вы используете средство проверки статического типа, например mypy, то правильно сделать вашу функцию универсальной функцией :
from typing import List, TypeVar
T = TypeVar('T')
def reverse_list(original: List[T]) -> List[T]:
return original[::-1]
То, что TypeVar является "заполнителем" - проверщик типов поймет, что если мы передадим List[str]
в эту функцию, то T
должен иметь тип str
.Следовательно, он завершит вывод, что тип вывода также должен быть List[str]
после завершения подстановки.
Обратите внимание, что это решение даже более эффективно, чем другие, так как проверка времени выполнения вообще не происходит -интерпретатор Python полностью игнорирует подсказки типов.Вместо этого средство проверки статического типа проверит правильность программы.
(Это также потенциально может быть недостатком - вам нужно будет добавить точные подсказки типов в большую часть вашей программы, прежде чем проверка типов начнет становитьсяэффективный способ защиты от ошибок, и это не всегда возможно.)