大域脱出とは

2重以上のループから一息に脱出することをいうらしい。Pythonで、いままで

import time
brk = False

for i in range(200):
    if brk: break
    time.sleep(0.2)
    print i
    for j in range(10):
        if brk: break
        time.sleep(0.1)
        print i,j 
        for k in range(5):
            print i,j,k
            if (i,j,k) == (2,3,4):
                brk = True
                break
        else:
            print "lv3"
    else:
        print "lv2"
else:
    print "lv1"

print "lv0"

とかやってたが、スマートではないのだそうだ。
Rubyでは 大域脱出には catch and throwというのを聞いたので、Pythonではどうなるのか調べて直した。

import time

class END(Exception):
    pass

try:
    for i in range(200):
        time.sleep(0.2)
        print i
        for j in range(10):
            time.sleep(0.1)
            print i,j 
            for k in range(5):
                print i,j,k
                if (i,j,k) == (2,3,4):
                    raise END 
            else:
                print "lv3"
        else:
            print "lv2"
    else:
        print "lv1"
except END:
    pass

print "lv0"

ここで参考にしたページは以下。
Python で for ループを回し切った後に行う処理と、深部からの脱出