如何从父函数访问*args输入?

use*_*390 0 python

我必须创建一个函数mega_calculator,它接受两个输入:一个函数和次数,我应该重复它.该函数应该在我调用它时返回一个值.在父函数(mega_calculator)中,现在我必须创建第二个函数,它mega_calculator通过*args在创建它时为其提供参数来获取与父函数相同数量的输入.我的问题是,如何访问第二个函数内的父函数参数?

我认为这*args是一个参数列表,因此如果我调用第一个和第二个值,我可以保存函数操作并重复数量到变量,以后在第二个函数内使用,但这不起作用.

我应该怎么做?,任何帮助都会受到很大的喜爱和赞赏.我们必须有奇怪的功能设置,所以不幸的是我不能只做一个简单的while循环.

    def mega_calculator(fn, repeat = 1000):
        def helper(*args):
            function = *args[0]
            bob = *args[1]
            while bob > 0:
                total += function
                return (total/repeat)
        return helper()

`
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

你误会了; args捕获传递给任何参数(尚未明确命名),helper()但不传递任何参数给该函数.

你改为直接调用它,没有任何参数.

你不需要在参数传递但是在这里,因为fnrepeat是从封闭直接访问.

很可能该作业要求您返回 helperfn使用这些参数调用:

def mega_calculator(fn, repeat=1000):
    def helper(*args):
        total = 0
        for _ in range(repeat):
            total += fn(*args)
        return total / repeat
    return helper
Run Code Online (Sandbox Code Playgroud)

现在mega_calculator()返回一个新的函数对象,fn在调用该函数时,会传递给它时调用该函数的任何参数.

一个小演示:

>>> def mega_calculator(fn, repeat=1000):
...     def helper(*args):
...         total = 0
...         for _ in range(repeat):
...             total += fn(*args)
...         return total / repeat
...     return helper
... 
>>> def add(a, b):
...     return a + b
... 
>>> repeated = mega_calculator(add, 10)
>>> repeated(5, 6)
11
Run Code Online (Sandbox Code Playgroud)

add()函数被调用10次,但由于助手也由重复的次数相加结果,它仍然是返回11.