Вы можете использовать функцию sys.exc_info()
, чтобы получить последнее исключение, которое произошло в текущем потоке в вас, кроме предложения. Это будет кортеж типа исключения, экземпляра исключения и трассировки. Трассировка - это связанный список фреймов. Это то, что используется для печати обратного следа интерпретатором. Содержит местный словарь.
Так что вы можете сделать:
import sys
def f():
a = 1
b = 2
1/0
try:
f()
except:
exc_type, exc_value, tb = sys.exc_info()
if tb is not None:
prev = tb
curr = tb.tb_next
while curr is not None:
prev = curr
curr = curr.tb_next
print prev.tb_frame.f_locals