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

时间:2016-06-25 12:59:05

标签: python function closures decorator

我试图编写一个以函数作为参数的函数,并返回一个运行所述函数给定次数的新函数。

例如,如果我有一个功能:

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函数中构建我需要的函数并返回它,也没有任何在线帮助对我有用。

1 个答案:

答案 0 :(得分:2)

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

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