Вам в соседнем ответе показали как можно элегантно обменять именами два объекта в питоне. Да, именно, поменяются местами имена, но объекты как были так и останутся.
Все отступы ровненько отрезаются форматировальщиком help
Зачем вам этой дичью заниматься приспичило?
Help on function f in module __main__:
f(arg: int)
Take integer ...
f(arg: str)
Take string ...
значит, распаковка - не решение.
Если тебе нужен метод, который возвращает разное число значений в зависимости от способа вызова - значит, это должно быть несколько методов. Скажем, приватная реализация, которая возвращает всё, и несколько публичных оберток, которые вызывают реализацию и возвращают только нужное.
Ну или не париться, возвращать namedtuple(), и пусть вызывающий код делает с ним что хочет.