Python 试着为初学者简化

Python 试着为初学者简化,python,Python,有没有一种方法可以简化代码流程,使busy=0和print busy不必出现两次 busy = 1 try: print 1/0 busy = 0 print busy except: busy = 0 print busy raise 好的,您可以将公共代码放在finally块中的try-catch块之后,如下所示: busy = 1 try: print 1/0 except: raise finally :

有没有一种方法可以简化代码流程,使
busy=0
print busy
不必出现两次

busy = 1
try:
    print 1/0
    busy = 0
    print busy
except:    
    busy = 0
    print busy
    raise

好的,您可以将公共代码放在
finally
块中的try-catch块之后,如下所示:

busy = 1
try:
    print 1/0
except:    
    raise
finally :
    busy = 0
    print busy
当您想设置
busy=0
print busy
而不考虑
try catch
,您只需将公共代码放在
try catch
内部
finally
之外,最终将执行该代码


您可以参考以了解更多信息。

您可以将其放在
finally
子句中:

try:
    print 1/0
except:
    raise
finally:
    busy = 0
    print busy
但是正如@Ryan在评论中提到的,现在在
子句中有一些无用的代码,除了:
之外。所以你可以做:

try:
    print 1/0
finally:
    busy = 0
    print busy

使用
finally
子句或在
块中使用函数,但
除外

busy = 1

def final(busy):
    print busy
    return busy

try:
    print 1/0
except:
    busy = final(0) #sets busy to 0

如果抛出异常,
print busy
busy
建议您可能希望使用
finally:
?我认为重点是只使用
finally
(因此重新播放),所以
除了:
就可以了。好吧,很有趣。我没有遇到过
被认为正常的情况,除了:
。将更新帖子。谢谢。(但是现在你可以完全删除它,因为最后有一个
)@Ryan:那么这个异常就不会被捕获了。请你进一步解释一下这个问题好吗?谢谢。
except:raise
的要点是不捕获异常(这就是为什么首先捕获所有异常是好的:它们会被重新引发)。