为了账号安全,请及时绑定邮箱和手机立即绑定

Python 3.6 inspect.signature()不显示参数

Python 3.6 inspect.signature()不显示参数

慕的地6264312 2021-03-29 16:13:59
我有一个功能:def report(start=1, quantity=100, days_left=7, min_app_version=None):我想获取参数名称和默认值,例如{'start':1, 'quantity':100, 'days_left':7, 'min_app_version':None}(或至少两个列表)来自此功能之外当我做import inspect print(inspect.signature(report))我懂了(* args,** kwargs)为什么“ inspect.signature”看不到函数参数?解决:问题是由于装饰器
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

比删除装饰器更好,您可以告诉装饰器使函数包装器看起来像使用检查工具包装的函数 functools.wraps


代替


def decorator(f):

    def wrapper(*args, **kwargs):

        print("Wrapped")

        return f(*args, **kwargs)

    return wrapper


@decorator

def report(start=1, quantity=100, days_left=7, min_app_version=None):

    pass


print(inspect.signature(report))

# (*args, **kwargs)

你可以做


from functools import wraps


def decorator(f):

    @wraps(f)

    def wrapper(*args, **kwargs):

        print("Wrapped")

        return f(*args, **kwargs)

    return wrapper


@decorator

def report(start=1, quantity=100, days_left=7, min_app_version=None):

    pass


print(inspect.signature(report))

# (start=1, quantity=100, days_left=7, min_app_version=None)


查看完整回答
反对 回复 2021-04-27
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

如果有人遇到此错误,只需删除函数装饰器即可。


@time_count

def report(start=1, quantity=100, days_left=7, min_app_version=None):


查看完整回答
反对 回复 2021-04-27
  • 2 回答
  • 0 关注
  • 356 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号