Python: sys.exc_info() 缺少局部变量
在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这个结构呢?是什么原因导致这个局部变量字典有时候会是空的呢?
1 个回答
0
局部变量的内容完全取决于那段代码的上下文。举个例子:
if condition:
foo='foo'
else:
bar='bar'
如果 condition==True
这个条件成立,那么 foo
就会出现在 locals()
里面,而 bar
不会;反之,如果条件不成立,bar
就会在 locals()
里面,而 foo
就不会。