Python Parameter Typen

Python Parameter Typen können seit der Version 3.5 in einer Funktion angegeben werden. Man kann also in der Funktion bereits definieren, dass ein Parameter z.B. vom Typ float ist. Genauso können auch die Rückgabewerte der Funktion definiert werden.

Ein einfaches Beispiel aus der aktuellen Python 3.7 Dokumentation zu Type aliases :

from typing import List
Vector = List[float]
 
def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]
 
# typechecks; a list of floats qualifies as a Vector.
new_vector = scale(2.0, [1.0, -4.2, 5.4])

In dem oben geziegten Code Ausschnitt importieren wir zunächst den Typ ‚List‘. Diesen benutzen wir anschließend, um einen neuen Typ ‚Vector‘ zu definieren. Vector ist dabei ein Alias für eine Liste von float Werten.

In der darauf folgengen Funktion ’scale‘ wird als erster Parameter ’scalar‘ der Typ float definiert,

scalar: float

sowie als zweiter Parameter ‚vector‘ der selbst erstellte Typ Vector definiert.

vector: Vector

Die Funktion gibt zudem ebenfalls einen Vector zurück.

-> Vector

Ein Type-Checker gibt nun eine Warnung aus, wenn man keine Liste mit float Werten übergibt:

PyCharm Type checker meldet ein Problem mit dem Listen Argument
PyCharm Type checker Warnung

Mit den built-in Typen und den Type aliases kann man eine Menge definieren und sollte für die meisten Zwecke damit zurecht kommen.

Sollte ein Parameter wirklich gar nicht definierbar sein, kann man entweder die Typ Definition wegfallen lassen (also wie vor Python 3.5) oder den Any Type benutzen, der jeglichen Parameter-Typ als kompatibel betrachtet.

Man hat also durch das typing Modul die Möglichkeit geschaffen, Funktionsparameter eindeutig zu klassifizieren. Der Code wird dadurch verständlicher und IDE Type-checker geben direkt eine Warnung aus, sollte man falsche Typen übergeben.