2017-04-06 81 views
2

有沒有辦法簡化代碼流程,以便busy = 0print busy不必兩次出現?嘗試和簡化初學者

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

'busy'暗示你可能想用'finally:'? – Ryan

回答

4

你可以把它的finally子句中:

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

但作爲@Ryan在評論中提到,現在你已經得到的代碼except:子句中無用位。所以,你可以這樣做:

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

我認爲重點是'終於'(因此重新加註),所以'除了:'沒有問題。 – Ryan

+0

好有趣。我沒有遇到過「除了:」被認爲是好的情況。將更新帖子。謝謝。 – bernie

+0

(但現在你可以完全刪除它,因爲有一個'finally'。) – Ryan

1

好吧,你可以把公共代碼的try-catch塊後finally塊,這樣的事情:

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

當你想設置busy = 0print busy不論try-catch,你可以將內的try-catch以外的通用代碼放在最終執行。

您可以參考this documentation瞭解更多。

+1

如果引發異常,則不會「忙碌」。 – Ryan

+0

是的,這是正確的。謝謝。 –

1

使用finally條款或except塊使用的功能。

busy = 1 

def final(busy): 
    print busy 
    return busy 

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