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

我有一个功能:

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”看不到函数参数?

解决:问题是由于装饰器


慕的地6264312
浏览 357回答 2
2回答

繁星点点滴滴

比删除装饰器更好,您可以告诉装饰器使函数包装器看起来像使用检查工具包装的函数 functools.wraps代替def decorator(f):    def wrapper(*args, **kwargs):        print("Wrapped")        return f(*args, **kwargs)    return wrapper@decoratordef report(start=1, quantity=100, days_left=7, min_app_version=None):    passprint(inspect.signature(report))# (*args, **kwargs)你可以做from functools import wrapsdef decorator(f):    @wraps(f)    def wrapper(*args, **kwargs):        print("Wrapped")        return f(*args, **kwargs)    return wrapper@decoratordef report(start=1, quantity=100, days_left=7, min_app_version=None):    passprint(inspect.signature(report))# (start=1, quantity=100, days_left=7, min_app_version=None)

慕尼黑5688855

如果有人遇到此错误,只需删除函数装饰器即可。@time_countdef report(start=1, quantity=100, days_left=7, min_app_version=None):
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python