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

aev*_*ris 2 python types arguments

假设我们有一个函数foo(a, b)是python模块的公共API的一部分.
有什么办法来查询的类型ab该函数需要?
我知道我可以通过inspect模块获取参数的数量和它们的默认值,但有没有可用的类型信息?

Mar*_*ers 6

Python是一种动态类型语言,所以没有; 一个函数应该记录他们的期望.

Python 3.5和更新版本支持可选类型提示 ; 如果库使用类型提示,那么您可以使用typing.get_type_hints()函数查询此信息以编程方式访问该信息.

通常,Python函数应该接受实现预期功能的对象,而不是特定类型.如果您的函数迭代序列以提取字符串,则应将其记录为接受(在类型提示术语中)Iterable[str]对象,而不是列表或元组或其他特定类型.

  • 另外,它不是参数的*类型*,而是它的可用/实现的*方法*,使其适合作为特定函数的参数,因为python使用**duck-typing**. (2认同)