python 如何查看一个函数的所有参数信息
比如有一个需求,我需要知道一个函数的参数信息,如果获取?
是在程序里判断,不是去看代码那种
比如下面的例子,我有一个 parse_params 专门用来对 func obj 的 params 做校验:
from loguru import loggerfrom typing import Callable
def haha(a: int, b: str, c=1, **kwages) -> int:
pass
def parse_params(func: Callable):
""" 分析目标函数的参数信息 """
logger.debug(func.__annotations__)
parse_params(haha)
本来想用 func obj 的 __annotations__
属性,但是这个不显示没有 typing hint 的参数
最好能把返回值也带上
回答:
Signature
看看这个满不满足需求
from inspect import signaturedef haha(a: int, b: str, c=1, **kwargs) -> int:
pass
haha_sign = signature(haha)
print(haha_sign) # (a:int, b:str, c=1, **kwargs) -> int
print(haha_sign.parameters) # OrderedDict([('a', <Parameter "a:int">), ('b', <Parameter "b:str">), ('c', <Parameter "c=1">), ('kwargs', <Parameter "**kwargs">)])
print(haha_sign.return_annotation) # <class 'int'>
可以获取参数的详细信息
for param in haha_sign.parameters.values(): print(
param.name,
param.kind, # 位置/关键词/位置或关键词/可变位置/可变关键词
param.annotation, # 类型注解,没有默认 inspect.Parameter.empty(可用 type(param.default) 获取默认值类型)
param.default # 默认值,没有默认 inspect.Parameter.empty
)
以上是 python 如何查看一个函数的所有参数信息 的全部内容, 来源链接: utcz.com/p/938500.html