Python:返回一个运行给定函数n次的函数

Python:返回一个运行给定函数n次的函数,python,function,closures,decorator,Python,Function,Closures,Decorator,我正在尝试编写一个函数,它以一个函数作为参数,并返回一个新函数,该函数在给定次数内运行该函数 例如,如果我有一个函数: def doubleNumber(num): return num * 2 我做了以下几件事: doubleThrice = repeatFunction(doubleNumber, 3) 然后我应该得到这个: doubleThrice(3) # Returns 18 but should it? 到目前为止,我已经有了这个,但我不认为这是我想要的: def re

我正在尝试编写一个函数,它以一个函数作为参数,并返回一个新函数,该函数在给定次数内运行该函数

例如,如果我有一个函数:

def doubleNumber(num):
    return num * 2
我做了以下几件事:

doubleThrice = repeatFunction(doubleNumber, 3)
然后我应该得到这个:

doubleThrice(3) # Returns 18 but should it?
到目前为止,我已经有了这个,但我不认为这是我想要的:

def repeatFunction(func, n):
    def inner(inp):
        return func(inp) * n
    return inner
我得到的印象是,它只是运行函数一次,然后将结果乘以n,而不是运行函数n次,尽管我不确定


我只是想不出如何在repeatFunction函数中构建所需的函数并返回它,也没有任何联机帮助对我真正有意义。

如果你想多次应用函数,你可能需要一个循环来重复多次:

def repeatFunction(func, n):
    def inner(inp):
        for i in range(n):
            inp = func(inp)
        return inp
    return inner

在您的示例中,doubleThrice(3)返回18。很抱歉,为什么这被否决?我已经提供了一个看似合理的例子来回答一个我相信其他人以前也担心过的问题。似乎不可能在这里问一个好问题。@dot.Py是吗?我真的不确定我的给定函数在这种情况下做了什么,这就是我到目前为止得到的。我正在寻找一些关于如何最好地完成我描述的事情的指导:)是的!这正是我需要的,我发誓我已经试过了。。。用重复的函数调用来合成答案是非常有意义的。当然,最直截了当的答案是,我会尽快给它打上标记。谢谢