Никак, слишком много значений для распаковки - это тоже плохо. А узнать количество распаковываемых переменных объект не сможет без анализа кода.
Собственно, главный вопрос тут опять "а зачем тебе такое?"
EDIT: Ну что ж, не говори, что тебя не предупреждали...
# оба модуля - встроенные, а не сторонние
import inspect
import dis
def callee(x):
our_frame = inspect.currentframe()
our_caller_frame = our_frame.f_back
our_caller = our_caller_frame.f_code
print(f"We are called by {our_caller.co_name}(), at line {our_caller_frame.f_lineno}")
print("Our caller's code goes as following (byte string):")
print(our_caller.co_code)
bytecode = dis.Bytecode(our_caller, first_line=our_caller.co_firstlineno)
print("Or, in human readable form, its this:")
print(bytecode.dis())
return [x*x]
def caller():
print("Calling callee()")
y = callee(2)
print(y)
def other_caller():
print("Calling callee()")
z, *_ = callee(3)
print(z)
caller()
other_caller()