python 如何查看一个函数的所有参数信息

python 如何查看一个函数的所有参数信息

比如有一个需求,我需要知道一个函数的参数信息,如果获取?

是在程序里判断,不是去看代码那种

比如下面的例子,我有一个 parse_params 专门用来对 func obj 的 params 做校验:

from loguru import logger

from 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 signature

def 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

回到顶部