У меня есть функции в 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)
Однако это дает сообщение об ошибке:
NameError: global name 'x' is not defined
x
является аргументом для выражения лямбда, так почему же его нужно определить?
Ожидаемое поведение является то, что h
должна быть новая функция, которая идентична lambda x,y: (-x,-y)
Поскольку вы называете свои функции (то есть они не анонимны), я бы избегал использования 'lambda' и вместо этого использовал' def'. [Лямбда-формы] (http://docs.python.org/tutorial/controlflow.html#lambda-forms) предназначены для небольших * анонимных * функций. –