Python Lambda函数变量排序
如果我这样陈述lambda函数:Python Lambda函数变量排序,python,lambda,Python,Lambda,如果我这样陈述lambda函数: someLambdaFunction = lambda x,y: x+x**2+y someLambdaFunction = lambda x,y: x+x**2+y someOtherLambdaFunction = lambda y, x: someLambdaFunction(x, y) 我能把lambda的顺序颠倒过来说 someOtherLambdaFunction = lambda y,x: x+x**2+y 不重写整个lambda函数?只需切
someLambdaFunction = lambda x,y: x+x**2+y
someLambdaFunction = lambda x,y: x+x**2+y
someOtherLambdaFunction = lambda y, x: someLambdaFunction(x, y)
我能把lambda的顺序颠倒过来说
someOtherLambdaFunction = lambda y,x: x+x**2+y
不重写整个lambda函数?只需切换参数?是的,您可以执行以下操作:
someLambdaFunction = lambda x,y: x+x**2+y
someLambdaFunction = lambda x,y: x+x**2+y
someOtherLambdaFunction = lambda y, x: someLambdaFunction(x, y)
基本上,重用原始的
someLambdaFunction
是的,您可以这样做:
someLambdaFunction = lambda x,y: x+x**2+y
someLambdaFunction = lambda x,y: x+x**2+y
someOtherLambdaFunction = lambda y, x: someLambdaFunction(x, y)
基本上,重用原始的
somelambdfunction
您可以编写一个通用函数,交换另一个函数的前两个参数:
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(…)
。您可以编写一个通用函数来交换另一个函数的前两个参数:
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(…)
来代替。好吧,你刚刚做到了。您所要做的就是切换参数名称,而不重写整个lambda函数。你在找别的东西吗?@user2357112他们在找一个可以交换另一个函数的参数位置的函数。你为什么给名称指定lambda?camelcase和named lambdas都反对PEP。几乎没有理由给任何东西分配lambda
。请停止重复lambda表达式。由def
语句定义的函数和由lambda表达式定义的函数之间没有函数(双关语)上的区别,在这里使用lambda表达式的选择不会影响主要问题。好吧,你刚刚做到了。您所要做的就是切换参数名称,而不重写整个lambda函数。你在找别的东西吗?@user2357112他们在找一个可以交换另一个函数的参数位置的函数。你为什么给名称指定lambda?camelcase和named lambdas都反对PEP。几乎没有理由给任何东西分配lambda
。请停止重复lambda表达式。由def
语句定义的函数和由lambda表达式定义的函数之间没有函数(双关语)上的区别,在这里选择使用lambda表达式并不影响主要问题。不过,这确实增加了一层间接性。我不明白为什么不能直接调用someLambdaFunction(y,x)
直接?@slider可能只有OP知道答案。可能,lambda函数充当现有接口的参数?@slider我正在尝试使用quad将lambda函数与多个变量集成,它只集成在函数的第一个参数上。不过,这确实增加了一层间接性。我不明白为什么不能只调用someLambdaFunction(y,x)
直接?@slider可能只有OP知道答案。可能,lambda函数充当现有接口的参数?@slider我正在尝试使用quad将lambda函数与多个变量集成,它只集成函数的第一个参数。