더북(TheBook)

또한, try/except/else도 이런 패턴을 따른다(Better way 65: ‘try/except/else/finally의 각 블록을 잘 활용하라’ 참고). 여기서 else는 ‘처리할 예외가 없는 경우에 이 블록을 실행하라’는 뜻이다. try/finally도 ‘앞의 블록을 실행한 다음에는 이 블록을 실행하라’는 뜻이므로 직관적이다.

파이썬에서 else, except, finally를 배운 프로그래머는 for/elseelse 부분을 ‘루프가 정상적으로 완료되지 않으면 이 블록을 실행하라’는 뜻으로 가정하기 쉽다. 하지만 실제 else 블록은 완전히 반대로 동작한다. 실제로 루프 안에서 break 문을 사용하면 else 블록이 실행되지 않는다.

for i in range(3):
    print('Loop', i)
    if i == 1:
        break
else:
    print('Else block!')

>>>
Loop 0
Loop 1
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.