Angeben des gewünschten Typs
In diesem Schritt werden wir untersuchen, wie man den gewünschten Typ für Variablen und Funktionsargumente angibt und wie man diese Typen mithilfe von Typ-Hinweisen (Type Hints) und bedingten Prüfungen (Conditional Checks) erzwingen kann. Obwohl Python dynamisch typisiert ist, ermöglichen es Ihnen Typ-Hinweise, statische Typinformationen in Ihren Code hinzuzufügen, die von Typ-Checkern wie mypy
verwendet werden können, um Typfehler vor der Laufzeit aufzuspüren.
Typ-Hinweise sind Anmerkungen, die den erwarteten Typ einer Variablen, eines Funktionsarguments oder eines Funktionsrückgabewerts angeben. Sie werden für Variablen und Argumente mit der :
-Syntax und für Rückgabewerte mit der ->
-Syntax geschrieben.
Beginnen wir damit, Typ-Hinweise zu unserem vorherigen Beispiel hinzuzufügen.
-
Öffnen Sie den VS Code-Editor in der LabEx-Umgebung.
-
Erstellen Sie eine neue Datei mit dem Namen type_hints.py
im Verzeichnis ~/project
.
~/project/type_hints.py
-
Fügen Sie den folgenden Code in die Datei type_hints.py
ein:
def add_numbers(x: int, y: int) -> int:
"""Adds two numbers together."""
return x + y
## Example usage
result: int = add_numbers(5, 3)
print(f"Result: {result}")
## Example with incorrect types
## This will not raise an error at runtime, but a type checker will flag it
## result: int = add_numbers("5", "3")
## print(f"Result: {result}")
In diesem Skript:
x: int
und y: int
geben an, dass die Argumente x
und y
Ganzzahlen sein sollten.
-> int
gibt an, dass die Funktion add_numbers
eine Ganzzahl zurückgeben sollte.
result: int
gibt an, dass die Variable result
eine Ganzzahl sein sollte.
-
Führen Sie das Skript im Terminal mit dem Befehl python
aus:
python ~/project/type_hints.py
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Result: 8
Das Skript läuft ohne Fehler, da die Typen korrekt sind. Wenn Sie jedoch die Zeilen mit den falschen Typen einkommentieren, wird das Skript weiterhin laufen, aber ein Typ-Checker wie mypy
würde diese Zeilen als Typfehler markieren.
Um mypy
zu installieren und auszuführen, können Sie die folgenden Befehle verwenden:
pip install mypy
mypy ~/project/type_hints.py
Da pip
nicht vorkonfiguriert ist, können Sie möglicherweise auf Fehler in Bezug auf fehlende Pakete oder falsche Versionen stoßen. Zu Zwecken dieses Labs werden wir uns darauf konzentrieren, das Konzept von Typ-Hinweisen und bedingten Prüfungen zu demonstrieren.
Eine andere Möglichkeit, Typen zu erzwingen, besteht darin, bedingte Prüfungen in Ihrem Code zu verwenden. Dies ermöglicht es Ihnen, Ausnahmen auszulösen, wenn die Typen nicht den erwarteten entsprechen.
def divide_numbers(x, y):
if not isinstance(x, (int, float)):
raise TypeError("x must be a number")
if not isinstance(y, (int, float)):
raise TypeError("y must be a number")
if y == 0:
raise ValueError("y cannot be zero")
return x / y
## Example usage
result = divide_numbers(10, 2)
print(f"Result: {result}")
## Example with incorrect types
## This will raise a TypeError
## result = divide_numbers("10", 2)
## print(f"Result: {result}")
In diesem Beispiel verwenden wir isinstance()
, um zu prüfen, ob x
und y
Zahlen (entweder int
oder float
) sind. Wenn dies nicht der Fall ist, werfen wir einen TypeError
. Wir prüfen auch, ob y
Null ist, und werfen einen ValueError
, wenn dies der Fall ist.
Indem Sie Typ-Hinweise und bedingte Prüfungen kombinieren, können Sie robusteren und wartbareren Python-Code schreiben, der weniger anfällig für Typfehler ist.