diff --git a/docs/de/docs/python-types.md b/docs/de/docs/python-types.md
index 81d43bc5b..839e1ce92 100644
--- a/docs/de/docs/python-types.md
+++ b/docs/de/docs/python-types.md
@@ -1,8 +1,8 @@
-# Einführung in Python-Typen
+# Einführung in Python-Typen { #python-types-intro }
-Python hat Unterstützung für optionale „Typhinweise“ (Englisch: „Type Hints“). Auch „Typ Annotationen“ genannt.
+Python hat Unterstützung für optionale „Typhinweise“ (auch "Typannotationen" genannt).
-Diese **„Typhinweise“** oder -Annotationen sind eine spezielle Syntax, die es erlaubt, den Typ einer Variablen zu deklarieren.
+Diese **„Typhinweise“** oder -annotationen sind eine spezielle Syntax, die es erlaubt, den Typ einer Variablen zu deklarieren.
Durch das Deklarieren von Typen für Ihre Variablen können Editoren und Tools bessere Unterstützung bieten.
@@ -18,7 +18,7 @@ Wenn Sie ein Python-Experte sind und bereits alles über Typhinweise wissen, üb
///
-## Motivation
+## Motivation { #motivation }
Fangen wir mit einem einfachen Beispiel an:
@@ -38,7 +38,7 @@ Die Funktion macht Folgendes:
{* ../../docs_src/python_types/tutorial001.py hl[2] *}
-### Bearbeiten Sie es
+### Bearbeiten Sie es { #edit-it }
Es ist ein sehr einfaches Programm.
@@ -58,7 +58,7 @@ Aber leider erhalten Sie nichts Nützliches:
-### Typen hinzufügen
+### Typen hinzufügen { #add-types }
Lassen Sie uns eine einzelne Zeile aus der vorherigen Version ändern.
@@ -102,7 +102,7 @@ Hier können Sie durch die Optionen blättern, bis Sie diejenige finden, bei der
-## Mehr Motivation
+## Mehr Motivation { #more-motivation }
Sehen Sie sich diese Funktion an, sie hat bereits Typhinweise:
@@ -116,13 +116,13 @@ Jetzt, da Sie wissen, dass Sie das reparieren müssen, konvertieren Sie `age` mi
{* ../../docs_src/python_types/tutorial004.py hl[2] *}
-## Deklarieren von Typen
+## Deklarieren von Typen { #declaring-types }
Sie haben gerade den Haupt-Einsatzort für die Deklaration von Typhinweisen gesehen. Als Funktionsparameter.
Das ist auch meistens, wie sie in **FastAPI** verwendet werden.
-### Einfache Typen
+### Einfache Typen { #simple-types }
Sie können alle Standard-Python-Typen deklarieren, nicht nur `str`.
@@ -135,7 +135,7 @@ Zum Beispiel diese:
{* ../../docs_src/python_types/tutorial005.py hl[1] *}
-### Generische Typen mit Typ-Parametern
+### Generische Typen mit Typ-Parametern { #generic-types-with-type-parameters }
Es gibt Datenstrukturen, die andere Werte enthalten können, wie etwa `dict`, `list`, `set` und `tuple`. Die inneren Werte können auch ihren eigenen Typ haben.
@@ -143,7 +143,7 @@ Diese Typen mit inneren Typen werden „**generische**“ Typen genannt. Es ist
Um diese Typen und die inneren Typen zu deklarieren, können Sie Pythons Standardmodul `typing` verwenden. Es existiert speziell für die Unterstützung dieser Typhinweise.
-#### Neuere Python-Versionen
+#### Neuere Python-Versionen { #newer-versions-of-python }
Die Syntax, welche `typing` verwendet, ist **kompatibel** mit allen Versionen, von Python 3.6 aufwärts zu den neuesten, inklusive Python 3.9, Python 3.10, usw.
@@ -157,7 +157,7 @@ Zum Beispiel bedeutet „**Python 3.6+**“, dass das Beispiel kompatibel mit Py
Wenn Sie über die **neueste Version von Python** verfügen, verwenden Sie die Beispiele für die neueste Version, diese werden die **beste und einfachste Syntax** haben, zum Beispiel, „**Python 3.10+**“.
-#### Liste
+#### Liste { #list }
Definieren wir zum Beispiel eine Variable, die eine `list` von `str` – eine Liste von Strings – sein soll.
@@ -195,7 +195,7 @@ Da die Liste ein Typ ist, welcher innere Typen enthält, werden diese von eckige
////
-/// tip | Tipp
+/// info | Info
Die inneren Typen in den eckigen Klammern werden als „Typ-Parameter“ bezeichnet.
@@ -221,7 +221,7 @@ Beachten Sie, dass die Variable `item` eines der Elemente in der Liste `items` i
Und trotzdem weiß der Editor, dass es sich um ein `str` handelt, und bietet entsprechende Unterstützung.
-#### Tupel und Menge
+#### Tupel und Menge { #tuple-and-set }
Das Gleiche gilt für die Deklaration eines Tupels – `tuple` – und einer Menge – `set`:
@@ -246,7 +246,7 @@ Das bedeutet:
* Die Variable `items_t` ist ein `tuple` mit 3 Elementen, einem `int`, einem weiteren `int` und einem `str`.
* Die Variable `items_s` ist ein `set`, und jedes seiner Elemente ist vom Typ `bytes`.
-#### Dict
+#### Dict { #dict }
Um ein `dict` zu definieren, übergeben Sie zwei Typ-Parameter, getrennt durch Kommas.
@@ -276,7 +276,7 @@ Das bedeutet:
* Die Schlüssel dieses `dict` sind vom Typ `str` (z. B. die Namen der einzelnen Artikel).
* Die Werte dieses `dict` sind vom Typ `float` (z. B. der Preis jedes Artikels).
-#### Union
+#### Union { #union }
Sie können deklarieren, dass eine Variable einer von **verschiedenen Typen** sein kann, zum Beispiel ein `int` oder ein `str`.
@@ -302,13 +302,15 @@ In Python 3.10 gibt es zusätzlich eine **neue Syntax**, die es erlaubt, die mö
In beiden Fällen bedeutet das, dass `item` ein `int` oder ein `str` sein kann.
-#### Vielleicht `None`
+#### Vielleicht `None` { #possibly-none }
Sie können deklarieren, dass ein Wert ein `str`, aber vielleicht auch `None` sein kann.
In Python 3.6 und darüber (inklusive Python 3.10) können Sie das deklarieren, indem Sie `Optional` vom `typing` Modul importieren und verwenden.
-{* ../../docs_src/python_types/tutorial009.py hl[1,4] *}
+```Python hl_lines="1 4"
+{!../../docs_src/python_types/tutorial009.py!}
+```
Wenn Sie `Optional[str]` anstelle von nur `str` verwenden, wird Ihr Editor Ihnen dabei helfen, Fehler zu erkennen, bei denen Sie annehmen könnten, dass ein Wert immer eine String (`str`) ist, obwohl er auch `None` sein könnte.
@@ -340,7 +342,7 @@ Das bedeutet auch, dass Sie in Python 3.10 `Something | None` verwenden können:
////
-#### `Union` oder `Optional` verwenden?
+#### `Union` oder `Optional` verwenden? { #using-union-or-optional }
Wenn Sie eine Python-Version unterhalb 3.10 verwenden, hier ist mein sehr **subjektiver** Standpunkt dazu:
@@ -375,7 +377,7 @@ Die gute Nachricht ist, dass Sie sich darüber keine Sorgen mehr machen müssen,
Und dann müssen Sie sich nicht mehr um Namen wie `Optional` und `Union` kümmern. 😎
-#### Generische Typen
+#### Generische Typen { #generic-types }
Diese Typen, die Typ-Parameter in eckigen Klammern akzeptieren, werden **generische Typen** oder **Generics** genannt.
@@ -427,7 +429,7 @@ Verwenden Sie für den Rest, wie unter Python 3.8, das `typing`-Modul:
////
-### Klassen als Typen
+### Klassen als Typen { #classes-as-types }
Sie können auch eine Klasse als Typ einer Variablen deklarieren.
@@ -447,9 +449,9 @@ Beachten Sie, das bedeutet: „`one_person` ist eine **Instanz** der Klasse `Per
Es bedeutet nicht: „`one_person` ist die **Klasse** genannt `Person`“.
-## Pydantic Modelle
+## Pydantic Modelle { #pydantic-models }
-Pydantic ist eine Python-Bibliothek für die Validierung von Daten.
+Pydantic ist eine Python-Bibliothek für die Validierung von Daten.
Sie deklarieren die „Form“ der Daten als Klassen mit Attributen.
@@ -485,9 +487,9 @@ Ein Beispiel aus der offiziellen Pydantic Dokumentation:
////
-/// info
+/// info | Info
-Um mehr über Pydantic zu erfahren, schauen Sie sich dessen Dokumentation an.
+Um mehr über Pydantic zu erfahren, schauen Sie sich dessen Dokumentation an.
///
@@ -497,11 +499,11 @@ Viel mehr von all dem werden Sie in praktischer Anwendung im [Tutorial - Benutze
/// tip | Tipp
-Pydantic verhält sich speziell, wenn Sie `Optional` oder `Union[Etwas, None]` ohne einen Default-Wert verwenden. Sie können darüber in der Pydantic Dokumentation unter Required fields mehr erfahren.
+Pydantic verhält sich speziell, wenn Sie `Optional` oder `Union[Something, None]` ohne einen Default-Wert verwenden. Sie können darüber in der Pydantic Dokumentation unter Required fields mehr erfahren.
///
-## Typhinweise mit Metadaten-Annotationen
+## Typhinweise mit Metadaten-Annotationen { #type-hints-with-metadata-annotations }
Python bietet auch die Möglichkeit, **zusätzliche Metadaten** in Typhinweisen unterzubringen, mittels `Annotated`.
@@ -545,7 +547,7 @@ Und ebenfalls, dass Ihr Code sehr kompatibel mit vielen anderen Python-Tools und
///
-## Typhinweise in **FastAPI**
+## Typhinweise in **FastAPI** { #type-hints-in-fastapi }
**FastAPI** macht sich diese Typhinweise zunutze, um mehrere Dinge zu tun.
@@ -567,7 +569,7 @@ Das mag alles abstrakt klingen. Machen Sie sich keine Sorgen. Sie werden all das
Das Wichtigste ist, dass **FastAPI** durch die Verwendung von Standard-Python-Typen an einer einzigen Stelle (anstatt weitere Klassen, Dekoratoren usw. hinzuzufügen) einen Großteil der Arbeit für Sie erledigt.
-/// info
+/// info | Info
Wenn Sie bereits das ganze Tutorial durchgearbeitet haben und mehr über Typen erfahren wollen, dann ist eine gute Ressource der „Cheat Sheet“ von `mypy`.