Python: sys.exc_info() 缺少局部变量

2 投票
1 回答
630 浏览
提问于 2025-04-15 23:43

在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 就不会。

撰写回答