Was ist der Typhinweis für (a:int,b:int=1,c:int=2,*d:str,**e:int)->int oder einige komplexere Funktionen in Python? [ges
Posted: 13 Jan 2025, 19:04
Wie der Titel schon sagt, wenn es einige Funktionen wie diese gibt:
und speichern Sie sie in Variablen:
Wie sollten die Typhinweise aussehen, wenn:
Verhalten Sie sich einfach genauso wie f1 und f2?
Oder ist das überhaupt möglich und wie geht man mit solchen Dingen am besten um?
Ich habe im Internet gesucht und Folgendes gefunden:
was darstellt:
aber das entspricht nicht ganz meinen Anforderungen.
Code: Select all
def f1(a: int, b: int = 1, c: int = 2, *d: str, **e: str):
pass
def f2(a: int, /, b: int, c: int = 2, *, d: int):
pass
Code: Select all
v1: SOME_MAGICAL_TYPE_HINT1 = f1
v2: SOME_MAGICAL_TYPE_HINT2 = f2
Code: Select all
v1(1) # pass check
v1(1, 1, 1) # pass check
v1(1, c=2) # pass check
v1(1, m='1') # pass check
v1(1, c='2') # fail check
v1() # fail check
v2(1, 1, d=1) # pass check
v2(1, b=1, d=1) # pass check
v2() # fail check
v2(1, 1, 1, 1) # fail check
Oder ist das überhaupt möglich und wie geht man mit solchen Dingen am besten um?
Ich habe im Internet gesucht und Folgendes gefunden:
Code: Select all
Callable[[int, *tuple[int, ...]], str]
Code: Select all
def f(a: int, *b: int) -> str:
pass