코드를 감싸고 있는 모든 loop로부터 한 방에 벗어나고 싶을 때가 종종 있다.
Java에서는 label
을 이용하여 이 문제를 간단히 해결할 수 있지만, 안타깝게도 python의 경우 오히려 코드를 복잡하게 만든다는 귀도의 판단에 따라 해당 로직이 구현되지 않았다고 한다. (PEP 3136 proposes labeled break/continue)
Nested loop를 한 번에 벗어나도록 구현하는 방법들 중 그나마 마음에 드는 방법은 예외처리를 이용하는건데,
function refactoring에 비해 더 간단히 구현할 수 있고 continue
도 활용할 수 있어 편리하다는 장점이 있다.
다만.. 개인적으로 코드 테스트할 때 이런 작업을 하다보니 try
indentation을 추가해주는 게 쪼끔 귀찮다..
try:
for ...
for ...
for ...
# Do something
if stop_condition:
raise StopIteration
except StopIteration:
# Handle exception
PREVIOUSEtc