Obwohl mir das Enten-Typisierungskonzept von Python bekannt ist, habe ich manchmal Probleme mit der Art der Argumente von Funktionen oder der Art des Rückgabewerts der Funktion.
Wenn ich die Funktion selbst geschrieben habe, kenne ich die Typen. Aber was ist, wenn jemand meine Funktionen nutzen und aufrufen möchte, wie soll er / sie die Typen kennen? Normalerweise füge ich Typinformationen in die Dokumentzeichenfolge der Funktion ein (wie: "...the id argument should be an integer..."und "... the function will return a (string, [integer]) tuple.")
Aber ist es wirklich so, wie es gemacht werden soll, die Informationen in der Dokumentenkette nachzuschlagen (und als Codierer dort abzulegen)?
Bearbeiten: Während die meisten Antworten auf "Ja, Dokument!" Ich denke, dass dies für 'komplexe' Typen nicht immer sehr einfach ist.
Zum Beispiel: wie beschreiben prägnant in einem docstring , dass eine Funktion , eine Liste von Tupeln zurückgibt, wobei jedes Tupel der Form (node_id, node_name, uptime_minutes) , und daß die Elemente jeweils ein String, String und Integer?
Die PEP-Dokumentation zu docstring enthält hierzu 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 Tupeln herumzugeben, dh ohne Klassen.