3
我在Python中有两个输入,做一些操作,并返回两个输出的函数。我想重新排列输出参数,所以我写了周围的新输出顺序创建一个新的功能围绕lambda表达式的包装
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)
但是原有功能的包装功能,这给了一个错误信息:
NameError: global name 'x' is not defined
x
是一个lambda表达式的参数,为什么它必须被定义?
预期的行为是h
应该是一个新的功能是相同的lambda x,y: (-x,-y)
既然你命名你的函数(即他们不是匿名的),我会避免使用'lambda'并使用'def'代替。 [Lambda表单](http://docs.python.org/tutorial/controlflow.html#lambda-forms)适用于小型*匿名*功能。 – 2010-09-01 00:25:42