python decorator,装饰一个递归函数来运行它多次

时间:2014-05-21 01:14:44

标签: python python-decorators

我有一个递归函数(f调用自身):

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)时,我正在调用一个无限次迭代的函数。我很好奇仍然使用装饰器的解决方案是什么,没有在新函数g中包装f,并装饰g。

感谢。


感谢您指出问题是由于f是递归的。


Decorating recursive functions in python这篇文章有类似的问题,也许这不是一个使用装饰器的好地方?

2 个答案:

答案 0 :(得分:1)

这应该有效

def iter_f(func):
    def newf(*args, **kwargs):
        for i in range(10):
            func(*args, **kwargs)
    return newf

@iter_f
def f(x):

答案 1 :(得分: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)
    ...