如何知道函數返回類型和參數類型?

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

雖然我知道 Python 的鴨子類型概念,但有時我會為函數的參數類型或函數返回值的類型而苦惱。

現在,如果我寫我自己的功能,我知道類型。但是如果有人想使用和調用我的函數怎麼辦,他/她怎麼知道類型?我通常將類型信息放在函數的文檔字符串中(例如:"...id 參數應該是一個整數...""...該函數將返回一個 ( string, [integer]) tuple.")

但是在文檔字符串中查找信息(並作為編碼人員將其放在那裡)真的是它應該完成的方式嗎?

編輯:雖然大多數答案似乎都指向“是的,文檔!”但我覺得對於“複雜”類型來說這並不總是很容易。
例如: 如何在文檔字符串中簡潔描述一個函數返回一個元組列表,每個元組的形式為 (node_id, node_name, uptime_minutes) 並且元素分別是字符串、字符串和整數?
docstring PEP 文檔對此沒有提供任何指導。
我想反駁的觀點是在這種情況下應該使用類,但我發現 python 非常靈活,因為它允許使用列表和傳遞這些東西元組,即 沒有類。