Python “命名”为哪个对象;g";绑定到?

Python “命名”为哪个对象;g";绑定到?,python,python-3.x,Python,Python 3.x,以下作业摘自 问题5。通过使用compose1作为第一个参数调用reduce,定义作业2中的重复函数。在下面的starter实现中仅添加一个表达式: 为了完成这项任务,我想了解g绑定到什么f绑定到square函数首先,重复(f,4)返回什么 一种函数,在对任意arg调用时,将返回f(f(f(f(arg))) 因此,如果您想用compose1构建它,您需要返回compose1(compose1(f,f),f)或compose1(f,compose1(f,f)) 现在,看看是什么做的,并弄清楚它每次

以下作业摘自

问题5。通过使用compose1作为第一个参数调用reduce,定义作业2中的重复函数。在下面的starter实现中仅添加一个表达式:


为了完成这项任务,我想了解
g
绑定到什么
f
绑定到
square
函数

首先,
重复(f,4)
返回什么

一种函数,在对任意
arg
调用时,将返回
f(f(f(f(arg)))

因此,如果您想用
compose1
构建它,您需要返回
compose1(compose1(f,f),f)
compose1(f,compose1(f,f))

现在,看看是什么做的,并弄清楚它每次都将传递给
compose1
。显然,您的
iterable
参数必须以
f
本身开始或结束。但是,为了确保获得两个可接受的结果中的一个,您还需要什么呢


同时,在对
compose1
的每个调用中,除了最后一个,两个参数中的一个必须是
重复的
函数的
f
,而另一个参数将是对
compose1
的另一个调用的结果。(最后一次,当然,它们都是
f
)找出其中哪一个是
f
,哪一个是
g
,以及如何使
reduce
为每一个传递正确的值,你就解决了问题。

你知道怎么做吗?这里有一个提示:如果您想要返回一个函数,该函数不执行
f(f(…f(arg);))
,那么它将是
compose(f,compose(f,compose(f,…(f)))
。这是否告诉了您
g
将是什么?g可以是任何内置pythonfunction@sachinsaxena:那么?这是真的,但在OP的情况下,它永远不会是一个内置函数…为什么这个问题是-1?我猜是有人没有仔细阅读,以为你只是要求他们为你解决作业(这应该得到否决票),而不是帮助您理解每个
compose1
调用的
g
参数是什么,这样您就可以自己解决分配问题(我认为这不值得否决)。在这样的问题上,这总是一个风险。我不知道如何仔细地写东西,以便没有人从快速扫描中得到错误的印象,但如果你关心选票,那就是你必须弄清楚的。
return reduce(compose1,[f代表I在范围(n)])
@overexchange:是的,这就是你的作业的答案。所以我假设你也知道你的问题的答案,每个
compose1
调用中
g
是什么?每次调用compose1时,g是f
def square(x):
    return x*x

def compose1(f, g):
    """Return a function of x that computes f(g(x))."""
    return lambda x: f(g(x))

from functools import reduce

def repeated(f, n):
    """Return the function that computes the nth application of f, for n>=1.

    f -- a function that takes one argument
    n -- a positive integer

    >>> repeated(square, 2)(5)
    625
    >>> repeated(square, 4)(5)
    152587890625
    """
    assert type(n) == int and n > 0, "Bad n"
    return reduce(compose1, "*** YOUR CODE HERE ***" )