检查Python函数签名而不调用
我的程序从用户输入中获取一个序列 args
和一个映射 kwargs
。我想检查这些输入,然后把它们传递给一个根据用户输入选择的 Python 函数 f
。在这种情况下,如果 f
的参数和 [kw]args
不匹配,那就是一个输入错误;我需要把这个错误和 f
实现中的可能的编程错误区分开来,尽管它们可能都会引发 TypeError
错误。
所以我想在调用函数之前检查一下参数是否匹配。除了手动将 [kw]args
和 inspect.getargspec
(或者在后来的 Python 版本中使用 .getfullargspec
或 .signature
)的结果进行比较,还有其他方法吗?
相关问题: 有没有办法检查 Python 中函数的参数签名?
1 个回答
2
使用 inspect
这个方法可能是实现这个功能最简单直接的方式了——这并不是在Python中人们通常会做的事情。
(一般来说,让最终用户可以随意调用任意函数并输入任意内容,并不是程序员想要的做法。)