Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Lambda函数变量排序_Python_Lambda - Fatal编程技术网

Python 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函数?只需切

如果我这样陈述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函数与多个变量集成,它只集成函数的第一个参数。