在 Python 中,我有捕获异常的代码,如下所示:
try:
<do stuff>
except:
exc_info = sys.exc_info()
我遇到的问题是回溯对象 (exc_info[2]) 不确定地缺少回溯对象中的局部变量。我确实知道这一点,因为我运行完全相同的代码,有时变量在 tb.tb_frame.f_locals 中,有时不在。 tb.tb_frame.f_globals 中的全局变量总是正确的。
什么填充了 f_locals 结构?什么可能导致局部变量字典有时为空?
请您参考如下方法:
locals 中的内容完全取决于该本地上下文中的代码。例如:
if condition:
foo='foo'
else:
bar='bar'
如果 condition==True 那么 foo 将在 locals() 而 bar 不会,否则bar 将在 locals() 中,而 foo 不会。
