lambda表达式的包装器

2024-04-20 00:09:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有接受两个输入、进行一些操作并返回两个输出的函数。我想重新排列输出参数,因此我围绕原始函数编写了一个包装器函数,该函数用新的输出顺序创建一个新函数

def rotate(f):
    h = lambda x,y: -f(x,y)[1], f(x,y)[0]
    return h

f = lambda x, y: (-y, x)
h = rotate(f)

但是,这将给出一条错误消息:

^{pr2}$

x是lambda表达式的参数,那么为什么必须定义它?在

预期的行为是h应该是与lambda x,y: (-x,-y)相同的新函数


Tags: lambda函数消息参数return定义顺序表达式
2条回答

优先级有问题。只需使用额外的括号:

def rotate(f):
    h = lambda x,y: (-f(x,y)[1], f(x,y)[0])
    return h

需要在lambda表达式周围添加括号:

h = lambda x,y: (-f(x,y)[1], f(x,y)[0])

否则,Python将代码解释为:

^{pr2}$

并且h是一个2元组。在

相关问题 更多 >