İşlev dönüş türü ve argüman türleri nasıl bilinir?

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

Python'un ördek-tipleme kavramının farkında olsam da, bazen işlevlerin argümanlarının türü veya işlevin dönüş değerinin türü ile mücadele ediyorum.

Şimdi, yazsaydım işlevi kendim, türleri biliyorum. Ama ya biri fonksiyonlarımı kullanmak ve çağırmak isterse, onun türleri bilmesi nasıl beklenir? Ben genellikle tip bilgilerini fonksiyonun dokümantasyonuna koyarım (örneğin: "...id argümanı bir tamsayı olmalıdır..." ve "... fonksiyon bir ( string, [integer]) tuple.")

Ama doküman dizisindeki bilgileri aramak (ve onu kodlayıcı olarak oraya koymak) gerçekten olması gerektiği gibi mi?

Düzenleme: Yanıtların çoğu "evet, belge!" ye yönelik gibi görünse de, bunun "karmaşık" türler için her zaman çok kolay olmadığını düşünüyorum.
Örneğin : Bir işlevin, formun her bir demeti (node_id, node_name, uptime_minutes) ile bir demetler listesi döndürdüğü ve öğelerin sırasıyla bir dize, dize ve tamsayı olduğu bir belge dizisinde özlü bir şekilde nasıl açıklanır?
Docstring PEP belgeleri bu konuda herhangi bir yönerge vermiyor.
Sanırım karşı argüman, bu durumda sınıfların kullanılması gerektiği olacaktır, ancak python'u çok esnek buluyorum çünkü listeleri kullanarak bu şeylerin etrafından dolaşılmasına izin veriyor ve demetler, yani sınıfsız.