我有两个函数,每个函数有两个参数。
第一个函数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))
答案 0 :(得分:1)
您的lambda
函数实际上从未被调用过。从both
函数返回时需要保存它。然后,你可以打电话给它。
以下是一个例子:
super_function = both(1, 2)
super_function(1, 2)
您的逻辑中存在无数其他错误,但这会“解决”您的问题。
答案 1 :(得分:1)
我不清楚你想做什么。这就是我理解的方式。
我已经定义了函数a
和b
,因为您似乎已经对它们进行了描述。
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))