Python-Typisierung: Überladung vs. TypeVarPython

Python-Programme
Anonymous
 Python-Typisierung: Überladung vs. TypeVar

Post by Anonymous »

Was ist der Unterschied zwischen der Verwendung einer TypeVar und einer Überladung in Python für Funktionen, die denselben Typ wie die Eingabe zurückgeben? Betrachten Sie diese Beispiele:
Beispiel 1. Verwendung von TypeVar:

Code: Select all

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
Beispiel 2, Verwendung von Überladung:

Code: Select all

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
Erreichen die beiden Beispiele tatsächlich das Gleiche, wobei die Überladung nur ausführlicher ist? Gibt es bemerkenswerte Unterschiede, wenn ich sie so verwende?
Natürlich ist dies ein triviales Beispiel. Der Code, den ich mir ansehe, würde wahrscheinlich eher eine Pandas-Serie oder einen DataFrame als Eingabe verwenden und nicht str und int.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post