【问题标题】:Python: Returning a function that runs a given function n timesPython:返回一个运行给定函数n次的函数
【发布时间】:2016-10-27 23:33:11
【问题描述】:

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

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

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

【问题讨论】:

  • doubleThrice(3) 在您的示例中返回 18。
  • 对不起,为什么会被否决?我为一个我确信其他人之前也担心过的问题提供了一个看起来合理的例子。似乎不可能在这里问一个好问题。
  • @dot.Py 是吗?我真的不确定我给定的功能在这种情况下会做什么,这就是我到目前为止所得到的。正在寻找一些关于如何最好地做我所描述的事情的指导:)

标签: python function closures decorator


【解决方案1】:

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

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

【讨论】:

  • 是的!这正是我所需要的,我可以发誓我已经尝试过了……通过重复的函数调用来不断地混合答案是非常有意义的。当然,最直接的答案,会尽快标记它。谢谢!
猜你喜欢
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-15
  • 2020-02-13
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多