今天,这篇有趣的python代码发布了on Twitter。
def f():
try:
raise KeyError
finally:
return 42
g = f()
执行它时,f()
会返回42
,并且没有异常在我预期的情况下冒泡。用例如return 42
替换pass
时作为return
语句,异常按预期在函数外传播。
但是,我想知道为什么在使用raise
时并非如此。毕竟,还有一个未被捕获的例外。
这是否意味着python函数可以return
或return
,但{{1}}会自动清除异常?