【发布时间】:2017-03-06 08:42:54
【问题描述】:
问题如下:
编写一个函数 compose,它接受两个函数作为参数,我们称它们为 Fa 和 Fb,并返回一个函数 Fres,这意味着来自另一个函数的输出数据是第一个函数的 indata,例如: Fres(x) = Fa(Fb(x))。
运行示例:
>>> def multiply_five(n):
... return n * 5
...
>>> def add_ten(x):
... return x + 10
...
>>> composition = compose(multiply_five, add_ten)
>>> composition(3)
65
>>> another_composition = compose(add_ten, multiply_five)
>>> another_composition(3)
25
据我了解,如果我发送 3,则函数 compose 将占用 3+10 = 13 之后将该结果发送到乘法函数中,它将执行:13*5 女巫是 65。 这是我目前写的代码:
def multiply_five(n):
return n*5
def add_ten(x):
return x+10
def compose(func1, func2):
def comp(arg):
return func2(arg)
return func1(comp(arg))
我得到编译错误,我尝试了一些不同的方法:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
composition = compose(multiply_five, add_ten)
File "C:\Users\Jim\Desktop\tdp002\5h.py", line 10, in compose
return func1(comp(arg))
NameError: name 'arg' is not defined
【问题讨论】:
-
arg如错误状态所示,当时尚未定义。它应该是什么?func1?func2?一些数据结构或其他包含两者的对象? -
hmm 仍然得到 : args is not defined
-
为什么不只是
def compose(func1, func2, n): return func1(func2(n))? -
@Ev.Kounis 因为
compose只接受两个函数作为它的参数,它必须返回组合函数。 -
@PM2Ring 哦,我明白了。我错过了这个问题。
标签: python function python-3.x