在Python中,我有代码捕获异常,如下所示:
try:
<do stuff>
except:
exc_info = sys.exc_info()
我遇到的问题是traceback对象(exc_info [2])在traceback对象中是非确定性地缺少局部变量。我知道这是因为我运行完全相同的代码,有时变量在tb.tb_frame.f_locals中,有时不在。全局变量在tb.tb_frame.f_globals中始终是正确的。
填充f_locals结构的内容是什么?什么可能导致局部变量字典有时是空的?
答案 0 :(得分:0)
本地人的内容完全取决于该本地环境中的代码。例如:
if condition:
foo='foo'
else:
bar='bar'
如果condition==True
,那么foo
将在locals()
而bar
则不会,否则bar
将在locals()
和{{1}不会。