比方说,我们有一个功能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',例如,直到运行时才会发生错误 –