【发布时间】:2015-03-18 15:38:42
【问题描述】:
我最近在编写 Python 程序时发现了一些奇怪的行为。我的情况如下:
try:
raise Exception("Meh!")
except Exception as e:
print e
if e:
print e
令我惊讶的是,这会打印出“Meh!”两次,表明仍然可以访问异常“e”,即使在 try/except 块结束后也是如此。
我的问题是这是 python 的预期行为还是更多的巧合。我可以指望它始终有效吗?还是这不是官方行为?
我知道我可以添加另一个变量来捕获它,如下所示:
my_exception = None
try:
raise Exception("Meh!")
except Exception as e:
print e
my_exception = e
if my_exception:
print my_exception
但如果第一个版本不被认为是 hack,我倾向于,因为这意味着变量更少。
顺便说一句。我正在使用 python 2.7.6。
谢谢
【问题讨论】:
-
我不会认为它是重复的,因为链接的问题是关于
try中的变量分配,但答案没有解决受except子句约束的名称,它可能略有不同。
标签: python variables exception scope