関数の戻り型と引数の型を知る方法は?

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

Pythonのダックタイピングの概念を知っている間、関数の引数の型や関数の戻り値の型に苦労することがあります。

さて、私が書いた場合関数自体、私はタイプを知っています。しかし、誰かが私の関数を使用して呼び出したい場合、その人はどのようにタイプを知ることが期待されますか?私は通常、型情報を関数のdocstringに入れます(たとえば、 "...id引数は整数である必要があります..."および"...関数は( string、[integer])tuple。 "

しかし、docstring内の情報を検索している(そして、コーダーとしてそこに配置している)のは、実際には想定されている方法ですか?

編集:回答の大部分は「はい、文書化してください!」に向けられているように見えますが、これは「複雑な」タイプでは必ずしも簡単ではないと思います。
たとえば:関数がタプルのリストを返し、各タプルが形式(node_id、node_name、uptime_minutes)であり、要素がそれぞれ文字列、文字列、整数であることをdocstringで簡潔に説明する方法は?
docstring PEPのドキュメントには、そのガイドラインは記載されていません。
その場合はクラスを使用する必要があるという反論があると思いますが、リストを使用してこれらを渡すことができるため、pythonは非常に柔軟です。タプル、すなわちクラスなし