如果我声明这样的lambda函数:
someLambdaFunction = lambda x,y: x+x**2+y
我可以颠倒那个lambda的顺序吗?
someOtherLambdaFunction = lambda y,x: x+x**2+y
是否不重写整个lambda函数?只是切换参数?
答案 0 :(得分:3)
是的,您可以执行以下操作:
someLambdaFunction = lambda x,y: x+x**2+y
someOtherLambdaFunction = lambda y, x: someLambdaFunction(x, y)
基本上,重复使用原始的someLambdaFunction
答案 1 :(得分:2)
您可以编写一个通用函数来交换另一个函数的前两个参数:
def swap2(func):
""" Swap the first two arguments of a function """
def wrapped(x, y, *args, **kwargs):
return func(y, x, *args, **kwargs)
return wrapped
f = lambda x,y: x+x**2+y
f_swapped= swap2(f)
assert f(3, 4) == f_swapped(4, 3)
之所以可行,是因为函数只是常规的Python对象,可以像整数,字符串等那样传递。
顺便说一句,几乎没有理由写something = lambda ...
。请改用def something(...)
。