你当然可以:
def power_times(k):
"""use as power_times(k)(x)(y) => k * y^x"""
return lambda x: lambda y: k * y**x
print power_times(2)(3)(4) # returns 2 * 4^3 = 128
当您使用参数2(power_times(2))调用此函数时,它将返回一个lambda函数,其作用类似于lambda x:lambda y:2 * y ** x(也就是说,就像您的原始函数一样,仅使用额外的“times” 2\” ).
您可以根据需要堆叠尽可能多的lambda:
def many_lambdas(x):
"""many_lambdas(x)(y)(z)(q) => x + y * z^q"""
return lambda y: lambda z: lambda q: x + y * z ** q
print many_lambdas(1)(2)(3)(4) # prints 163
事实上,如果你完全不使用def,可能会更清楚,只是写道:
many_lambdas = lambda x: lambda y: lambda z: lambda q: x + y * z ** q
或者,您也可以跳过使用lambda并将它们用作嵌套函数:
def many_funcs(x):
def many_funcs_y(y):
def many_funcs_z(z):
def many_funcs_q(q):
return x + y * z ** q
return many_funcs_q
return many_funcs_z
return many_funcs_y
print many_funcs(1)(2)(3)(4) # prints 163