订单应符合规定!错误

时间:2016-06-23 11:35:09

标签: python lambda

def compose(f,g): 

  return lambda f: f + 1
  return lambda g: g

如何指定return语句的顺序

这些是测试用例;

add1 = lambda a: a+1
this   = lambda a: a

test.expect( compose(add1,this)(0) == 1 )

3 个答案:

答案 0 :(得分:2)

def compose(f1, g1):
    # do something
    return lambda f:f+1, lambda g:g

将返回两个函数的元组。

您可以获得以下各项功能:

func1, func2 = compose(a,b)

答案 1 :(得分:1)

函数中不能有两个return语句。一旦第一个被调用,将无法到达第二个,因为该函数已经返回。但是,您可以使用tuple来组织输出,如下所示。

def compose(f,g):

    return (lambda f: f + 1, lambda g: g)

但要小心,因为这将返回实际的lambdas,如下例所示:

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]。这意味着函数返回的变量将是实际函数,而不是数字。要返回一个数字,不要使用lambdas,只需正常计算数字。

值得注意的是,参数对此功能没有影响。

答案 2 :(得分:0)

def compose(f,g): 

   return lambda f: f + 1,lambda g: g

print compose(f,g)[0]
print compose(f,g)[1]