如何返回一个将两个函数与两个参数组合在一起的函数

时间:2017-08-29 21:24:48

标签: python function lambda

我有两个函数,每个函数有两个参数。 第一个函数a打印出两个参数(整数)的组合结果,第二个函数b打印出两个以空格分隔的参数。

因此,如果我执行a(1,2),它将打印3,而b(1,2)将打印出来1。

我尝试创建一个将lambda作为lambda x, y : (a(x,y), b(x,y))返回的函数 但是当我试一试时,它并没有打印出任何东西。

函数里面有自己的print所以我猜想在创建lambda时,它应该打印出结果然后返回一个超级函数。

def a(c, d):
    print('*', a)
    return total

def b(c, d):
    print('**', b)
    return echo

def both(f, g):
    return lambda x, y: (a(x, y), b(x, y))

2 个答案:

答案 0 :(得分:1)

您的lambda函数实际上从未被调用过。从both函数返回时需要保存它。然后,你可以打电话给它。

以下是一个例子:

super_function = both(1, 2)
super_function(1, 2)

您的逻辑中存在无数其他错误,但这会“解决”您的问题。

答案 1 :(得分:1)

我不清楚你想做什么。这就是我理解的方式。

我已经定义了函数ab,因为您似乎已经对它们进行了描述。

def a(c, d):
    return c+d

def b(c, d):
    return '%s %s'%(c,d)

class Both使用类似定义的参数集保留两个函数的定义。它的__call__方法返回与两元组相同的参数列表的两个函数的结果。

class Both:
    def __init__(self, f, g):
        self.f = f
        self.g = g
    def __call__ (self, *args):
        return (self.f(*args),self.g(*args))

这些最后一行只是使用class的两种略有不同的方式。

both = Both(a,b); print (both(1,2))

print (Both(a,b)(3,5))