例如,这是我的功能:
def myfunc(x,y):
print(x+y)
现在我要为其编写装饰器 我希望装饰器在x + y之后仅打印“测试” 我的意思是我下次想打电话给myfunc(x,y) 我希望结果有所作为 像这样
x+y
test
我这样做的原因是我想学习将带有参数的函数传递给装饰器,如果为此编写装饰器,我将在此简单示例中学习到。 感谢您的帮助
答案 0 :(得分:1)
您可以通过以下方式做到这一点:
def mydecorator(f):
def wrapper(x,y):
print ("inside my decorator")
f(x,y)
print ("test")
return wrapper
@mydecorator
def myfunc(x,y):
print(x+y)
myfunc(4,5)
以上代码执行的输出为:
inside my decorator
9
test
答案 1 :(得分:1)
要使此功能适用于具有任意数量个参数的函数,您可以采用以下方式:
def print_test(func):
def wrapper(*args,**kwargs):
res = func(*args,**kwargs)
print('test')
return res
return wrapper
@print_test
def myfunc(x,y):
print(x+y)
myfunc(2,3)