Вы не можете получить такую информацию, если не храните ее самостоятельно (возможно, декоратор).
Посмотрите на bar.__code__
и bar.__closure__
, возможно, они предоставляют вам достаточно информации.
__closure__
не будет хранить весь контекст для того, когда bar был создан, только переменные, на которые ссылается bar для повышения эффективности памяти.
Декоратор, который должен добиться цели:
def save_frame(func):
frame=inspect.currentframe().f_back
func.__frame = frame
return func
Имейте в виду, что использование этого действительно испортит сборку мусора, хранение всего кадра стека означает, что ничто, на которое есть ссылки в стеке, не может быть обработано GC (поэтому __closure__
захватывает только то, на что ссылаются).