Python对于其if/else
语句是否有一个finally
等价物,类似于其try/except/finally
语句?我们可以简化这一点:
if condition1:
do stuff
clean up
elif condition2:
do stuff
clean up
elif condition3:
do stuff
clean up
...
...
对此:
if condition1:
do stuff
elif condition2:
do stuff
elif condition3:
do stuff
...
...
finally:
clean up
其中finally
只有在满足条件并运行其“do stuff”之后才会调用?相反,如果不满足任何条件,则finally
代码将不会运行。
我不喜欢说亵渎神明的话,但我能描述它的最好方式是在导致finally
的每个“做事情”块的末尾都有一个GOTO
语句。
本质上,它与else
语句相反。虽然else
仅在不满足其他条件时运行,但只有在满足其他条件时才会运行。
mhlester的答案有重复的代码,改进后的版本可能如下:
完全可以这样做:
在某些方面,不太方便,因为你必须使用一个单独的功能。不过,好的做法是无论如何不要做太长的函数。将逻辑分为易于阅读的小函数(通常最多1页长)可以使测试、文档编制和理解执行流更加容易。
需要注意的一点是,
finally
子句在发生异常时不会运行。要做到这一点,还需要在其中添加try:
内容。你的逻辑类似于:
丑,但这是你要的
相关问题 更多 >
编程相关推荐