Передача нескольких результатов выполнения функции в 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 шт):

Автор решения: Alexey Trukhanov

Надо распаковать кортеж прямо в передаче параметров:

dic = (lambda x, y: {'12': x, '10': y})(*func())
→ Ссылка