比方說,我們有一個功能foo(a, b)
,它是Python模塊的公共API的一部分。
有什麼方法可以查詢該函數期望的a
和b
的類型嗎?
我知道我可以通過inspect
模塊獲得參數的數量和它們的默認值,但是有沒有可用的類型信息?有沒有辦法獲得函數參數的類型?
2
A
回答
6
Python是一種動態類型語言,所以沒有;一個功能應該是文件而不是他們的期望。
Python 3.5及更高版本的支持optional type hinting;如果庫使用類型提示,則可以使用typing.get_type_hints()
function查詢此信息以編程方式訪問該信息。
通常,Python函數應該接受實現預期功能而不是特定類型的對象。如果函數遍歷一個序列來提取字符串,那麼它應該被記錄爲接受(以類型暗示術語)一個對象,而不是一個列表或元組或其他特定類型。
+2
此外,它不是參數的*類型*,而是它的可用/實現*方法*,使它適合作爲一個特定函數的參數,因爲python使用** duck-typing **。 – jbndlr
相關問題
- 1. 有沒有辦法在R中聲明函數參數類型?
- 2. Oracle:有沒有辦法獲得視圖的列數據類型?
- 3. R:有沒有辦法捕獲所有的函數參數值
- 4. 有沒有什麼辦法可以獲得「當前函數」的返回類型
- 5. 有沒有辦法在運行時獲得構造函數的參數值
- 6. PHP:有沒有辦法獲得方法的返回類型?
- 7. 有沒有辦法獲得函數的「文檔字符串」?
- 8. Rust:有沒有辦法在宏類型參數上調用靜態函數?
- 9. 有沒有辦法從Method結構中獲取參數的類類型?
- 10. 有沒有辦法通過自檢來獲取類構造函數參數?
- 11. 有沒有辦法找出函數的返回類型?
- 12. 有沒有辦法獲得函數表達式的構造函數名稱?
- 13. 有沒有辦法讓jquery.ready函數獲得Joomla模塊的位置和函數?
- 14. 在Swift中,沒有辦法獲得返回函數的參數名稱?
- 15. 有沒有辦法獲得小數的「有效數字」?
- 16. 有沒有辦法使用ModelAndView獲得@ ResponseBody類型的行爲?
- 17. 有沒有辦法獲得特徵的類型名稱?
- 18. 有沒有辦法獲得數據類型爲varchar的列的總和
- 19. 有沒有辦法獲得傳遞給方法的參數數組?
- 20. 有沒有辦法將一個類型參數約束爲SqlDbType?
- 21. 有沒有辦法獲得一個類的變量和函數列表
- 22. 有沒有辦法在haskell中轉換函數類型?
- 23. 有沒有辦法來包裝函數有va_args參數?
- 24. 泛型類沒有泛型函數中的類型參數
- 25. C++有沒有辦法獲得模板類型?
- 26. '公共函數'沒有類型參數,所以不能有類型參數。 VB.NET
- 27. 有沒有辦法獲得傳遞給Sass mixin的參數數組?
- 28. 有沒有辦法在COBOL中參數化函數?
- 29. 有沒有辦法將參數轉發到內部constexpr函數?
- 30. 有沒有辦法讓參數提供給php函數?
不,默認情況下不是。你應該相信你的程序員,或者儘可能早地在你的函數中失敗。另外,記錄你的公共API。 – jbndlr
用'foo .__ doc__'檢查函數的文檔字符串這應該包含您要查找的信息,但不能保證。問題在於Python不會將變量強制爲某種類型。例如,你可以嘗試將一個字符串傳遞給'sqrt',例如,直到運行時纔會發生錯誤 –