Kyl*_*ens 77 python try-except
这是一些表现特殊的代码.这是我编写的行为的简化版本.这仍然会表现出奇怪的行为,并且我对于为什么会这样做有一些具体的问题.
我在Windows 7上使用Python 2.6.6.
def demo1():
try:
raise RuntimeError,"To Force Issue"
except:
return 1
else:
return 2
finally:
return 3
def demo2():
try:
try:
raise RuntimeError,"To Force Issue"
except:
return 1
else:
return 2
finally:
return 3
except:
print 4
else:
print 5
finally:
print 6
Run Code Online (Sandbox Code Playgroud)
结果:
>>> print demo1()
3
>>> print demo2()
6
3
Run Code Online (Sandbox Code Playgroud)
Gar*_*tty 111
因为保证会执行finally语句(好吧,假设没有断电或Python无法控制的任何事情).这意味着在函数返回之前,它必须运行finally块,它返回不同的值.
在Python文档状态:
当在try ... finally语句的try套件中执行return,break或continue语句时,finally子句也会在"出路"中执行.continue语句中的continue语句是非法的.(原因是当前实施存在问题 - 将来可能会解除此限制).
这意味着当您尝试返回时,将finally调用该块,返回它的值,而不是您将拥有的值.
小智 6
执行顺序为:
因此,finally块中的任何返回都将提前结束步骤。
| 归档时间: |
|
| 查看次数: |
28876 次 |
| 最近记录: |