Типизация 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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