如何解决我如何在装饰器函数中打印函数默认参数?
这是我的代码:
def test_deco(func):
def innrer_func(*args,**kwargs):
print('args : ',args)
print('kwargs : ',kwargs)
return func(*args,**kwargs)
return innrer_func
@test_deco
def add (x = 2,y= 3 ) :
return x + y
print(add())
这是我的输出:
args : ()
kwargs : {}
5
我的问题是,为什么*args
和**kwargs
为空,但我有正确的结果,如何将x
和y
传递到test_deco
中?
解决方法
我必须使用inspect
模块来做到这一点。
import inspect
def test_deco(func):
def innrer_func(*args):
result = func(*args)
try:
print(f'{args[0]} + {args[1]} = {result}')
except IndexError:
default_args = inspect.getcallargs(func,*args)
print(f'{default_args["x"]} + {default_args["y"]} = {result} | Default Values')
finally:
return result
return innrer_func
@test_deco
def add (x = 5,y = 8 ) :
return x + y
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。