python - UnboundLocalError : local variable 'e' referenced before assignment

标签 python python-3.x exception

为什么这段代码不起作用?

def test():   
    e = None
    try:
        raise Exception

    except Exception as e:
        pass

    return e

test()

我收到此错误:

UnboundLocalError:分配前引用的局部变量“e”

最佳答案

当异常被捕获并绑定(bind)到一个名称时,该名称在 try 之后被清除。陈述。来自 documentation of the try statement :

except E as N:
    foo

行为相同
except E as N:
    try:
        foo
    finally:
        del N

因此,如果捕获到异常,e不再存在一次return e已达到。这样做是为了打破堆栈帧(包含对 e 的引用)和由 e 引用的回溯之间的引用循环。 (其中包含对堆栈帧的引用)。

关于python - UnboundLocalError : local variable 'e' referenced before assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62250236/

相关文章:

ctypes 中的 python 和 cdll。不能使用 printf

Python:给定 UTC 中的当前时间,您如何确定特定时区中一天的开始和结束时间?

python - Gurobi 问题 - 使用回调函数添加用户剪辑

python - 如何按列导出数据框以分隔 csv 文件?以及如何将不同数据框中的列附加到分离的 csv 文件中

python - 捕获Python中除特定异常之外的所有异常

python - 绘制 2 度线性回归的困难

python-3.x - Python : Running nested loop, 2D 移动窗口,并行

python - 如何在每次 while 循环通过时创建一个新数组

xamarin - 如何解决 Xamarin.Forms.Platform.Android.ListViewAdapter.IsEnabled 异常?

JAVA。我收到 'unreported exception' 编译器错误