Typen in Python
Dieser Artikel erklärt die Typen in Python.
YouTube Video
Typen in Python
Das typing
-Modul in Python wird verwendet, um Typ-Hinweise in Python einzuführen. Es wurde ursprünglich in Python 3.5 eingeführt und dient dazu, die Lesbarkeit und Wartbarkeit des Codes zu verbessern. Typ-Hinweise beeinflussen nicht die Laufzeit des Codes, ermöglichen jedoch Typ-Prüfungen mit IDEs und statischen Analysetools.
Grundlagen der Typ-Hinweise
Typ-Hinweise verdeutlichen die Absicht des Codes, indem sie die Typen von Funktionen und Variablen explizit angeben. Im folgenden Beispiel werden Typen für die Argumente und den Rückgabewert angegeben.
1def add_numbers(a: int, b: int) -> int:
2 return a + b
3
4result: int = add_numbers(5, 10)
5print(result) # 15
Im obigen Code sind a
und b
vom Typ Integer (int
), und der Rückgabewert der Funktion wird ebenfalls als Integer explizit angegeben. Auch mit Typ-Hinweisen werden Typen nicht strikt durchgesetzt, aber während der Entwicklung können Warnungen angezeigt werden, wenn Typen nicht übereinstimmen.
Wichtige Typ-Hinweise
Das typing
-Modul in Python bietet verschiedene Klassen und Funktionen zur Definition von Typ-Hinweisen. Nachfolgend finden Sie eine Liste häufig verwendeter Typ-Hinweise.
int
: Ganzzahlstr
: Zeichenkettefloat
: Gleitkommazahlbool
: WahrheitswertList
: ListeDict
: WörterbuchTuple
: TupelSet
: Menge
List
-Typ
Der Listentyp wird mit der List
-Klasse angegeben. Sie können den Typ der Elemente in einer Liste auch explizit angeben.
1from typing import List
2
3def sum_list(numbers: List[int]) -> int:
4 return sum(numbers)
5
6print(sum_list([1, 2, 3])) # 6
In diesem Beispiel wird erwartet, dass alle Elemente der Liste vom Typ int
sind.
Dict
-Typ
Ein Dictionary-Typ wird mit Dict
definiert. Die Typen von Schlüsseln und Werten können festgelegt werden.
1from typing import Dict
2
3def get_student_age(students: Dict[str, int], name: str) -> int:
4 return students.get(name, 0)
5
6students = {"Alice": 23, "Bob": 19}
7print(get_student_age(students, "Alice")) # 23
In diesem Beispiel verwendet das Dictionary str
als Schlüsseltyp und int
als Werttyp.
Tuple
-Typ
Tupel werden mit dem Tuple
-Typ angegeben. Den Typ jedes Elements in einem Tupel können Sie individuell angeben.
1from typing import Tuple
2
3def get_person() -> Tuple[str, int]:
4 return "Alice", 30
5
6name, age = get_person()
7print(name, age) # Alice 30
Hier wird gezeigt, dass die Funktion get_person
ein Tupel zurückgibt, das einen String und eine Ganzzahl enthält.
Union
-Typ
Der Union
-Typ wird verwendet, um explizit anzugeben, dass mehrere Typen akzeptiert werden.
1from typing import Union
2
3def process_value(value: Union[int, float]) -> float:
4 return value * 2.0
5
6print(process_value(10)) # 20.0
7print(process_value(3.5)) # 7.0
In diesem Beispiel nimmt die Funktion process_value
entweder ein int
oder float
als Argument und gibt ein Ergebnis vom Typ float
zurück.
Optional
-Typ
Der Optional
-Typ wird verwendet, wenn eine Variable None
sein kann. Er wird als Kurzform für Union[Type, None]
bereitgestellt.
1from typing import Optional
2
3def greet(name: Optional[str] = None) -> str:
4 if name is None:
5 return "Hello, Guest!"
6 return f"Hello, {name}!"
7
8print(greet()) # Hello, Guest!
9print(greet("Alice")) # Hello, Alice!
Hier wird gezeigt, dass, wenn name
nicht angegeben ist, es als None
behandelt wird.
Generische Typen
Generische Typen sind eine Möglichkeit, abstrakt darzustellen, welche Art von Elementen eine Datenstruktur enthält. Im Modul typing
können Sie generische Typen mit TypeVar
definieren.
1from typing import TypeVar, List
2
3T = TypeVar('T')
4
5def get_first_element(elements: List[T]) -> T:
6 return elements[0]
7
8print(get_first_element([1, 2, 3])) # 1
9print(get_first_element(["a", "b", "c"])) # a
In diesem Beispiel ist get_first_element
eine Funktion, die das erste Element einer Liste zurückgibt, und sie funktioniert unabhängig vom Typ der Liste.
Typalias
Ein Typalias ist eine Möglichkeit, komplexe Typdefinitionen zu vereinfachen, indem man ihnen einen klaren Namen gibt.
1from typing import List, Tuple
2
3Coordinates = List[Tuple[int, int]]
4
5def get_coordinates() -> Coordinates:
6 return [(0, 0), (1, 1), (2, 2)]
7
8print(get_coordinates()) # [(0, 0), (1, 1), (2, 2)]
In diesem Beispiel wird ein Typalias Coordinates
definiert, um einfach einen Typ mit Tupeln in einer Liste darzustellen.
Zusammenfassung
Das Modul typing
in Python ist sehr nützlich, um die Lesbarkeit und Wartbarkeit von Code zu verbessern. Durch die richtige Verwendung von Typ-Hinweisen können Sie Typkonflikte und Fehler vermeiden, insbesondere bei groß angelegten Projekten oder in der Teamentwicklung. Typen sind lediglich ein Entwicklungswerkzeug und haben keinen Einfluss auf das Laufzeitverhalten, wodurch die Flexibilität des Codes erhalten bleibt.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.