또한, try/except/else도 이런 패턴을 따른다(Better way 65: ‘try/except/else/finally의 각 블록을 잘 활용하라’ 참고). 여기서 else는 ‘처리할 예외가 없는 경우에 이 블록을 실행하라’는 뜻이다. try/finally도 ‘앞의 블록을 실행한 다음에는 이 블록을 실행하라’는 뜻이므로 직관적이다.
파이썬에서 else, except, finally를 배운 프로그래머는 for/else의 else 부분을 ‘루프가 정상적으로 완료되지 않으면 이 블록을 실행하라’는 뜻으로 가정하기 쉽다. 하지만 실제 else 블록은 완전히 반대로 동작한다. 실제로 루프 안에서 break 문을 사용하면 else 블록이 실행되지 않는다.
for i in range(3): print('Loop', i) if i == 1: break else: print('Else block!') >>> Loop 0 Loop 1