遇到local variable 'e' referenced before assignment这样的问题应该如何解决

Posted 冬日降临

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遇到local variable 'e' referenced before assignment这样的问题应该如何解决相关的知识,希望对你有一定的参考价值。

问题:程序报错:local variable ‘e‘ referenced before assignment

解决:遇到这样的问题,说明你在声明变量e之前就已经对其进行了调用,定位到错误的地方,对变量进行重新的声明


通常这样的问题对于python的程序员来说都是因为习惯了python2的语法,转移到python3中时,出现的错误。
在Python3中,异常对象无法在异常块作用域外访问。(原因是在垃圾收集器运行且从内存中清理引用之前会在内存栈帧中保存一个引用周期)
通常参考下面这个例子来做异常处理:

在python2 中:
import sys

def bar(i):
if i == 1:
raise KeyError(1)
if i == 2:
raise ValueError(2)

def bad():
e = None
try:
bar(int(sys.argv[1]))
except KeyError as e:
print(‘key error‘)
except ValueError as e:
print(‘value error‘)
print(e)

在python3中:
import sys

def bar(i):
if i == 1:
raise KeyError(1)
if i == 2:
raise ValueError(2)

def good():
exception = None
try:
bar(int(sys.argv[1]))
except KeyError as e:
exception = e
print(‘key error‘)
except ValueError as e:
exception = e
print(‘value error‘)
print(exception)

以上是关于遇到local variable 'e' referenced before assignment这样的问题应该如何解决的主要内容,如果未能解决你的问题,请参考以下文章

Python | local variable 'xxxx' referenced before assignment

UnboundLocalError: local variable 'range' referenced before assignment

UnboundLocalError: local variable 'a' referenced before assignment

python 错误--UnboundLocalError: local variable '**' referenced before assignment

全局变量报错:UnboundLocalError: local variable 'xxxxx' referenced before assignment

全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment