我的程序从用户输入派生一个序列args
和一个映射kwargs
。我想检查该输入,然后将其转发到python函数f
(根据用户输入选择)。在这种情况下,f
和[kw]args
之间的函数签名不匹配是输入错误;我必须将它与f
的实现中可能的编程错误区分开来,即使它们可能都会引发TypeError
。
所以我想在尝试函数调用之前检查签名。除了手动将[kw]args
与inspect.getargspec
(或稍后的python版本中的.getfullargspec
或.signature
)的结果进行比较之外,还有办法做到这一点吗?
相关问题: Is there a way to check a function's signature in Python?
答案 0 :(得分:2)
使用inspect
的方法可能是存在这种方法的最直接的方法 - 它不是人们通常期望用Python做的事情。
(通常,允许最终用户使用任意输入调用任意函数不是程序员想要的。)