2017-04-06 10 views
2

busy = 0print busyが2回存在する必要がないようにコードフローを簡略化する方法はありますか?初心者のための単純化を試してみる

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

私はポイントが 'finally'を持っていたと思うので(reraise)、' except: 'は問題ありません。 – Ryan

+0

興味深いです。私は 'except:'がOKとみなされる状況に遭遇していない。ポストを更新します。ありがとうございました。 – bernie

+0

(ただし、「finally」があるので完全に削除できます) – Ryan

1

さて、あなただけの、finallyブロックでtry-catchブロックの後にこのような何か共通のコードを置くことができます:あなたは関係なくtry-catchbusy = 0print busyを設定したかったよう

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

は、あなたが最終的に実行されるfinally内の共通コードをtry-catchの外側に置くことができます。

詳細はthis documentationを参照してください。

+1

例外がスローされた場合、 'print busy 'になりません。 – 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 
関連する問題