繁体   English   中英

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

[英]python decorator, decorate a recursive function to run it many times

我有一个递归函数(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是递归的。


在python中装饰递归函数这个帖子有类似的问题,也许这不是一个使用装饰器的好地方?

这应该工作

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

@iter_f
def f(x):

尝试这个:

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)
    ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM