Order should be as specified! error
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 | def compose(f,g): return lambda f: f + 1 return lambda g: g |
如何指定返回语句的顺序
这些是测试用例;
1 2 3 4 | add1 = lambda a: a+1 this = lambda a: a test.expect( compose(add1,this)(0) == 1 ) |
1 2 3 | def compose(f1, g1): # do something return lambda f:f+1, lambda g:g |
将返回两个函数的元组。
您可以获得如下单独的函数:
1 | func1, func2 = compose(a,b) |
函数中不能有两个RETURN语句。一旦调用了第一个函数,就不会到达第二个函数,因为函数已经返回。但是,您可以使用一个元组来组织输出,它看起来像这样。
1 2 3 | def compose(f,g): return (lambda f: f + 1, lambda g: g) |
但是要小心,因为这将返回实际的lambda,如下面的示例所示:
1 2 3 4 5 6 | In [7]: def func(f, g): ...: return (lambda f: f + 1, lambda g: g) ...: In [8]: func(0, 0) Out[8]: (<function __main__.<lambda>>, <function __main__.<lambda>>) |
请注意,这些类型是按行输出显示的[8]。这意味着函数返回的变量将是实际函数,而不是数字。要返回数字,不要使用lambda,只需正常计算数字即可。
值得注意的是,参数对这个函数没有影响。
1 2 3 4 5 6 | def compose(f,g): return lambda f: f + 1,lambda g: g print compose(f,g)[0] print compose(f,g)[1] |