有时候可能会有这种场景:你在不执行一个函数的情况下,想预先知道这个函数的参数,可以通过 inspect 来获取:
from inspect import signature
def test(a: str, b: int = 2) -> None:
pass
sig = signature(test)
for k, v in sig.parameters.items():
print(k, v, sep=' = ') # key 是参数名, value 是一个对象,里面封装了参数的一些信息
print(
v.annotation, # 参数的注解
v.kind, # 参数类型:是关键字参数,还是位置参数等 POSITIONAL_OR_KEYWORD, ...
v.name, # 参数名
v.default, # 参数的默认值,没有默认值的话:inspect._empty
sep=' | '
)
上面的结果:
a = a: str
<class 'str'> | POSITIONAL_OR_KEYWORD | a | <class 'inspect._empty'>
b = b: int = 2
<class 'int'> | POSITIONAL_OR_KEYWORD | b | 2