def make_multiplier(scaling_factor):
return lambda x: mul(x, scaling_factor)
def make_exponentiator(exponent):
return lambda x: pow(x, exponent)
mul接受两个变量x,y并返回x*y。pow接受两个变量x,y并返回x^y。请注意,这两个函数非常相似。我们可以将通用性抽象为更通用的函数make_生成器,这样我们就可以编写:
make_multiplier = make_generator(mul)
make_exponentiater = make_generator(pow)
编写函数make_生成器
测试用例:
make_multiplier(3)(2) = 6
make_exponentiator(3)(2) = 8
我的解决方案:
def make_generator(op):
return lambda x, y: op(x, y)
#################
# DO NOT REMOVE #
#################
def mul(x,y):
return x*y
def pow(x,y):
return x**y
make_multiplier = make_generator(mul)
make_exponentiator = make_generator(pow)
我得到了输出,但没有通过给定的测试用例。任何帮助都将不胜感激
如果您有一个像
f(x, y)
这样的函数,并且希望能够像g(x)(y)
那样调用它,则称为currying。您可以像这样变换lambda:你的函数应该接受一个操作并返回一个函数,这个函数使一个函数使用一个固定值的操作(我知道你很难理解这一点)。而您当前的实现只返回一个函数,该函数接受两个值并返回结果。更改您的实现,如下所示:
相关问题 更多 >
编程相关推荐