Si bien soy consciente del concepto de escritura de pato de Python, a veces tengo problemas con el tipo de argumentos de las funciones o el tipo de valor de retorno de la función.
Ahora, si escribí la función yo mismo, SÍ conozco los tipos. Pero, ¿qué pasa si alguien quiere usar y llamar a mis funciones, cómo se espera que conozca los tipos? Por lo general, pongo información de tipo en la cadena de documentos de la función (como: "...the id argument should be an integer..."y "... the function will return a (string, [integer]) tuple.")
Pero, ¿buscar la información en la cadena de documentos (y ponerla allí, como codificador) es realmente la forma en que se supone que debe hacerse?
Editar: Si bien la mayoría de las respuestas parecen dirigirse hacia "¡sí, documento!" Siento que esto no siempre es muy fácil para los tipos "complejos".
Por ejemplo: ¿cómo describir de manera concisa en una cadena de documentos que una función devuelve una lista de tuplas, con cada tupla del formulario (node_id, node_name, uptime_minutes) y que los elementos son respectivamente una cadena, una cadena y un entero?
La documentación de la cadena de documentos PEP no da ninguna guía al respecto.
Supongo que el contraargumento será que en ese caso se deberían usar clases, pero creo que Python es muy flexible porque permite pasar estas cosas usando listas y tuplas, es decir, sin clases.