for-else, try-else 構文
この記事は Python Tips Advent Calendar 2012 7日目の記事です。
Python の for や try 文では、else 節を含めることができます。
>>> def find(xs, v): ... for x in xs: ... if x == v: ... print 'found' ... break ... else: ... print 'not found' >>> find([1,2,3], 2) found >>> find([1,2,3], 5) not found
for の場合は、その中で break や return されず、最後までループした場合に else 節が処理されます。
>>> def foo(f): ... try: ... f() ... except Exception, e: ... print 'except' ... else: ... print 'else' ... finally: ... print 'finally' >>> foo(lambda: 0) else finally >>> foo(lambda: 1/0) except finally
try の場合は except の逆になります。つまり try 文の中で例外が投げられなかった場合のみ呼ばれます。
.