Jak poznać typ zwracany funkcji i typy argumentów?

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

Chociaż znam koncepcję pisania kaczką w Pythonie, czasami zmagam się z typem argumentów funkcji lub typem wartości zwracanej funkcji.

Teraz, jeśli napisałem funkcji sam, znam typy. Ale co, jeśli ktoś chce używać i wywoływać moje funkcje, w jaki sposób ma znać typy? Zwykle umieszczam informacje o typie w dokumentacji funkcji (na przykład: "... argument id powinien być liczbą całkowitą..." i "... funkcja zwróci ( string, [integer]) krotka.")

Ale czy wyszukiwanie informacji w docstringu (i umieszczanie ich tam jako kodera) jest naprawdę tak, jak powinno?

Edytuj: podczas gdy większość odpowiedzi wydaje się kierować na „tak, dokument!”, wydaje mi się, że nie zawsze jest to łatwe w przypadku „złożonych” typów.
Na przykład : jak opisać zwięźle w dokumencie, że funkcja zwraca listę krotek, z każdą krotką postaci (node_id, node_name, uptime_minutes) i że elementy są odpowiednio ciągiem, ciągiem i liczbą całkowitą?
Dokumentacja docstring PEP nie daje żadnych wskazówek na ten temat.
Sądzę, że kontrargumentem będzie to, że w takim przypadku należy użyć klas, ale uważam, że Python jest bardzo elastyczny, ponieważ pozwala przekazywać te rzeczy za pomocą list i krotki, tj. bez zajęć.