装饰器装饰一个递归函数
在Python中装饰器可以为原函数添加一些功能。但如果函数本身是递归定义的,则不会仅装饰最外层,而是在每次递归的时候都调用装饰器。这样会导致原函数无法被直观的装饰。
首先定义一个装饰器
# 随便定义一个装饰器
def my_decorator(fun):
def decorator(*args, **kwargs):
fun(*args, **kwargs)
return decorator
再用它随便装饰一个递归函数
# 随便装饰一个递归函数
@my_decorator
def my_recursion_fun(num):
if num == 1:
return 1
else:
return 1 + my_recursion_fun(num - 1)