如何在装饰器函数中打印函数默认参数?
How can i print function default arguments in decorator function?
这是我的代码:
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
这是我的代码:
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