Python 有没有办法获取函数参数的类型?

Python 有没有办法获取函数参数的类型?,python,types,arguments,Python,Types,Arguments,假设我们有一个函数foo(a,b),它是python模块的公共API的一部分。 有没有办法查询函数期望的a和b的类型? 我知道我可以通过inspect模块获取参数的数量及其默认值,但是是否有可用的类型信息?Python是一种动态类型语言,因此没有;职能部门应该记录他们的期望 Python 3.5及更新版本的支持;如果库使用类型提示,则可以使用查询此信息以编程方式访问该信息 通常,Python函数应该接受实现预期功能的对象,而不是特定类型的对象。如果您的函数迭代一个序列来提取字符串,那么它应该被记

假设我们有一个函数
foo(a,b)
,它是python模块的公共API的一部分。
有没有办法查询函数期望的
a
b
的类型?

我知道我可以通过
inspect
模块获取参数的数量及其默认值,但是是否有可用的类型信息?

Python是一种动态类型语言,因此没有;职能部门应该记录他们的期望

Python 3.5及更新版本的支持;如果库使用类型提示,则可以使用查询此信息以编程方式访问该信息


通常,Python函数应该接受实现预期功能的对象,而不是特定类型的对象。如果您的函数迭代一个序列来提取字符串,那么它应该被记录为接受一个
Iterable[str]
对象,而不是列表、元组或其他特定类型。

否,默认情况下不是。你应该信任你的程序员,否则你的功能会尽早失败。另外,记录您的公共API。使用
foo.\uuuu doc\uuuu
检查函数的docstring,该函数应该包含您要查找的信息,但不能保证。问题是Python没有将变量强制转换为特定类型。因此,您可以尝试将字符串传递到
sqrt
,例如,在运行时之前不会出现任何错误。此外,由于python使用duck类型,使其适合作为特定函数的参数的不是参数类型,而是其可用/实现的方法。