5.26 如何获取一个函数设定的参数¶
在 Python 中有一个叫 inspect 的库,非常的好用,利用它可以获取一些数据,这在写一些框架时非常有用。
比如有下面这样一个函数
def demo(name, age, gender="male", *args, **kw):
pass
使用 inspect 可以直接获取
>>> from inspect import signature
>>>
>>> sig = signature(demo) # # 获取函数签名
>>> sig
<Signature (name, age, gender='male', *args, **kw)>
利用 inspect 还可以检查传参是否匹配签名
>>> sig.bind("王炳明", 27)
<BoundArguments (name='王炳明', age=27)>
>>>
>>> sig.bind("王炳明")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.6/inspect.py", line 2997, in bind
return args[0]._bind(args[1:], kwargs)
File "/usr/lib64/python3.6/inspect.py", line 2912, in _bind
raise TypeError(msg) from None
TypeError: missing a required argument: 'age'