Типизация Python: перегрузка против TypeVarPython

Программы на Python
Anonymous
Типизация Python: перегрузка против TypeVar

Сообщение Anonymous »

В чем разница между использованием TypeVar и перегрузкой в Python для функций, возвращающих тот же тип, что и входные данные? Рассмотрим эти примеры:
Пример 1. Использование TypeVar:

Код: Выделить всё

from typing import TypeVar

StrOrInt = TypeVar("StrOrInt", str, int)

def return_same_type_typevar(x: StrOrInt) -> StrOrInt:
if isinstance(x, str):
# process str
return x
else:
# process int
return x
Пример 2, использование перегрузки:

Код: Выделить всё

from typing import overload

@overload
def return_same_type_overload(x: str) -> str:
...

@overload
def return_same_type_overload(x: int) -> int:
...

def return_same_type_overload(x):
if isinstance(x, str):
# process str
return x
else:
# process int
return x
Действительно ли эти два примера достигают одного и того же, только перегрузка более многословна? Есть ли заметные различия, когда я использую их таким образом?
Конечно, это тривиальный пример. Код, который я рассматриваю, вероятно, больше будет использовать в качестве входных данных pandas Series или DataFrame, а не str и int.

Подробнее здесь: https://stackoverflow.com/questions/645 ... vs-typevar

Вернуться в «Python»