Wie erkennt man Funktionsrückgabetyp und Argumenttypen?

| | | | | | | | | | | | | | |

Obwohl ich mir des Duck-Typing-Konzepts von Python bewusst bin, kämpfe ich manchmal mit der Art der Argumente von Funktionen oder der Art des Rückgabewerts der Funktion.

Nun, wenn ich geschrieben habe die funktion selber kenne ich die typen. Aber was ist, wenn jemand meine Funktionen verwenden und aufrufen möchte, woher soll er/sie die Typen kennen? Normalerweise füge ich Typinformationen in den Docstring der Funktion ein (wie: "...das id-Argument sollte eine Ganzzahl sein..." und "... die Funktion gibt ein ( string, [integer]) tuple.")

Aber ist das Nachschlagen der Informationen im Docstring (und das Einfügen als Codierer) wirklich so, wie es gemacht werden sollte?

Bearbeitung: Während die Mehrheit der Antworten in Richtung „Ja, Dokument!“ zu zielen scheint, ist dies meiner Meinung nach für „komplexe“ Typen nicht immer ganz einfach.
Zum Beispiel : Wie kann man kurz in einem Docstring beschreiben, dass eine Funktion eine Liste von Tupeln zurückgibt, mit jedem Tupel der Form (node_id, node_name, uptime_minutes) und dass die Elemente jeweils eine Zeichenfolge, eine Zeichenfolge und eine Ganzzahl sind?
Die Docstring-PEP-Dokumentation gibt dazu keine Richtlinien.
Ich denke, das Gegenargument wird sein, dass in diesem Fall Klassen verwendet werden sollten, aber ich finde Python sehr flexibel, weil es erlaubt, diese Dinge mit Listen und zu umgehen Tupel, dh ohne Klassen.