Typannotationen für Tupel und Listen
Wenn wir für bisher für Variablen und Parameter Typannotationen verwendet haben, haben wir immer nur einen einzelnen Typ wie str
oder int
a;s Datentyp angegeben. Was aber, wenn wir eine Variable haben, die ein Tupel oder eine Liste ist annotieren wollen? Hier haben wir es mit einem komplexeren Datentyp zu tun, der aus mehreren Elementen besteht. So können wir ein Tupel bestehen d aus einer Zahl und einem Text haben, oder eine Liste, die aus mehreren Zahlen besteht.
Typannotationen für Tupel
Um eine Variable zu annotieren, die als Werte Tupels eines bestimmten Typs hat, müssen wir einerseits angeben, dass es sich um den Typ tuple
handelt, und andererseits, welche Typen die einzelnen Elemente des Tupels haben. Dies machen wir, indem wir die Typen der einzelnen Elemente in eckigen Klammern hinter dem Typ tuple
angeben. Das folgende Beispiel illustriert dies für ein Tupel, das aus einer Zahl und einem Text besteht:
a: tuple[int, str] = (1, "Hallo")
Beachten Sie, dass wir hierfür die eckigen Klammern verwenden, und nicht, wie sie vielleicht vermutet hätten, runde Klammern. Die runden Klammern werden verwendet, um ein Tupel zu definieren, die eckigen Klammern werden verwendet, um den Typ eines Tupels anzugeben. Hinter dieser Syntax steckt eine allgemeine Regel: Wenn wir solche Komplexeren Typen, wie Tupel oder Listen annotieren, verwenden wir immer eckige Klammern, um den Typ der Datenstruktur (also Tupel oder Liste) anzugeben, und runde Klammern, um den Wert zu definieren.
Typannotationen für Listen
Die Typannotationen für Listen funktionieren fast gleich wie für Tupel. Wir verwenden aber nicht den Typ tuple
, sondern den Typ list
. Zudem geben wir nicht den Typ aller Elemente einzeln an,
sondern nur einen Typ, der für alle Elemente gilt. Um eine Liste von Zahlen zu annotieren, verwenden wir also folgende Syntax:
list_of_numbers: list[int] = [1, 2, 3]
Im Gegensatz zu Tupeln würde es hier keinen Sinn machen, die Typen der einzelnen Elemente anzugeben, da wir ja beliebig viele Elemente haben können und die Liste zur Laufzeit länger werden kann.
Sie fragen sich nun vielleicht, wie sie eine Typannotation schreiben, wenn sie eine Liste von Elementen verschiedenen Typs haben. Auch dies ist in Python möglich, benötigt aber ein spezielles Modul, das wir hier nicht weiter behandeln. In der Praxis ist es auch selten eine gute Idee, Listen mit Elementen verschiedener Typen zu verwenden. Die Grundregel ist, dass wir den Typ jedes Wertes in unserem Programm kennen sollten. Wenn wir eine Liste mit Elementen verschiedener Typen haben, ist dies nicht der Fall.
Experimente
Annotieren Sie den folgenden Code mit den korrekten Typen.
Fragen und Kommentare
Haben Sie Fragen oder Kommentare zu diesem Artikel? Nutzen Sie das Forum und helfen Sie sich und Ihren Mitstudierenden dieses Thema besser zu verstehen.