Python 装饰器,装饰递归函数以多次运行
我有一个递归函数(也就是这个函数会自己调用自己):
def f(x) :
....
我想多次运行这个函数。我使用了以下装饰器:
def iter_f(func) :
def newf(x):
for i in range(10):
func(x)
return newf
@iter_f
def f(x): a RECURSIVE function.
当我调用 f(x) 的时候,其实是在调用一个会无限次重复自己的函数。我很好奇有没有办法继续使用装饰器,而不需要把 f 包装在一个新的函数 g 里面,然后再给 g 加装饰器。
谢谢。
感谢你指出问题是因为 f 是递归的。
在 Python 中装饰递归函数 这篇文章有类似的问题,也许在这里使用装饰器并不是个好主意?
2 个回答
1
试试这个:
def iter_f(func) :
def newf(x):
for i in range(10):
func(x)
newf._original = func
return newf
@iter_f
def f(x):
...
call f._original(y)
...
1
这个应该可以工作
def iter_f(func):
def newf(*args, **kwargs):
for i in range(10):
func(*args, **kwargs)
return newf
@iter_f
def f(x):