Python Lambda函数变量排序

时间:2018-11-14 23:04:33

标签: python lambda

如果我声明这样的lambda函数:

someLambdaFunction = lambda x,y: x+x**2+y

我可以颠倒那个lambda的顺序吗?

someOtherLambdaFunction = lambda y,x: x+x**2+y

是否不重写整个lambda函数?只是切换参数?

2 个答案:

答案 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(...)