Передача нескольких результатов выполнения функции в lambda-функцию в разные переменные
Коллеги, буду сразу на примерах показывать, думаю, так нагляднее.
Есть функция, которая возвращает несколько объектов (для примера возьмем два). Вернувшиеся значения можно получить в одну переменную, тогда это будет кортеж или в несколько переменных, тогда они распакуются в каждую переменную.
def func():
return 12, 10
# вот так будет кортеж
x = func()
print(x)
# вот так будут две разные переменные
x, y = func()
(print(x, y))
Я ожидаю, что по той же логике я передам результаты в анонимную функцию. Смотрим:
def func():
return 12, 10
dic = (lambda x: {'12': x[0], '10': x[1]})(func())
print(dic)
Нормально, как ожидалось. Передали кортеж, распаковали в теле функции.
Теперь передаем в две переменные:
def func():
return 12, 10
dic = (lambda x, y: {'12': x, '10': y})(func())
print(dic)
Нет, так не работает, потому что:
TypeError: () missing 1 required positional argument: 'y'
Можно ли как-то это сделать? Что я упускаю?
UPT
Пока писал вопрос, возник ответ. Но уже столько понаписал, что пожалел времени, поэтому опубликую ответ сам. Извините, спасибо!
P.S. Но если есть другие решения - буду очень рад!
Ответы (1 шт):
Надо распаковать кортеж прямо в передаче параметров:
dic = (lambda x, y: {'12': x, '10': y})(*func())