检查Python函数签名而不调用

1 投票
1 回答
512 浏览
提问于 2025-04-17 13:48

我的程序从用户输入中获取一个序列 args 和一个映射 kwargs。我想检查这些输入,然后把它们传递给一个根据用户输入选择的 Python 函数 f。在这种情况下,如果 f 的参数和 [kw]args 不匹配,那就是一个输入错误;我需要把这个错误和 f 实现中的可能的编程错误区分开来,尽管它们可能都会引发 TypeError 错误。

所以我想在调用函数之前检查一下参数是否匹配。除了手动将 [kw]argsinspect.getargspec(或者在后来的 Python 版本中使用 .getfullargspec.signature)的结果进行比较,还有其他方法吗?

相关问题: 有没有办法检查 Python 中函数的参数签名?

1 个回答

2

使用 inspect 这个方法可能是实现这个功能最简单直接的方式了——这并不是在Python中人们通常会做的事情。

(一般来说,让最终用户可以随意调用任意函数并输入任意内容,并不是程序员想要的做法。)

撰写回答