더북(TheBook)

BETTER WAY 12
for와 while 루프 뒤에는 else 블록을 쓰지 말자

 

 

파이썬의 루프에는 대부분의 다른 프로그래밍 언어에는 없는 추가적인 기능이 있다. 루프에서 반복되는 내부 블록 바로 다음에 else 블록을 둘 수 있는 기능이다.

for i in range(3):

print(‘Loop %d’ % i)

else:

print(‘Else block!’)

 

>>>

Loop 0

Loop 1

Loop 2

Else block!

 

놀랍게도 else 블록은 루프가 종료되자마자 실행된다. 이걸 왜 else라고 부르는 걸까? and라고 해야 하지 않을까? if/else 문에서 else는 ‘이전 블록이 실행되지 않으면 이 블록이 실행된다’는 의미다. try/except 문에서 except도 마찬가지로 ‘이전 블록에서 실패하면 이 블록이 실행된다’고 정의할 수 있다.

비슷하게 try/except/elseelse도 ‘이전 블록이 실패하지 않으면 실행하라’는 뜻이므로 이 패턴을 따른다(Better way 13 “try/except/else/finally에서 각 블록의 장점을 이용하자” 참고). try/finally도 ‘이전 블록을 실행하고 항상 마지막에 실행하라’는 의미이므로 이해하기 쉽다.

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