关于python:函数返回值问题

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]