Skip to main content
 首页 » 编程设计

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

2025年05月04日9mate10pro

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