【发布时间】:2018-12-17 08:11:17
【问题描述】:
我有一个函数:
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' 看不到函数参数?
已解决:问题出在装饰器上
【问题讨论】:
-
对我来说似乎是work fine。
-
我安装了 Python 3.6 并且工作正常:打印的签名是
(start=1, quantity=100, days_left=7, min_app_version=None) -
report是否有任何注释或以任何方式动态修改?inspect.getfullargspec(report)显示什么? -
@FHTMitchell 它显示:FullArgSpec(args=[], varargs='args', varkw='kwargs', defaults=None, kwonlyargs=[], kwonlydefaults=None, annotations={})
-
太好了,很高兴您找到了解决方案。您应该发布自己问题的答案(并使用装饰器显示代码)。
标签: python python-3.x inspect method-signature